我想将它们合并在一起,但我不知道如何正确合并它们.
我在后端为PHP做了但是对于javascript我不能让它工作.
我有这两个按钮的jquery让我们说
我从这样的东西开始工作正常并没有错,但我想将它们合并在一起会很好,因为它们非常相似.
$('ol#textField').on('click', '.done-btn', doneButton);
$('ol#textField').on('click', '.delete-btn', deleteButton);
我的deleteButton和doneButtion函数
function deleteButton(e){
e.preventDefault();
var $clicked = $(this);
var $cLI = $clicked.closest('li');
var todoText = $cLI.clone().children().remove().end().text();
var getID = $cLI.attr('id');
$.ajax({
// codes
}
});
}
function doneButton(e){
e.preventDefault();
var $clicked = $(this);
var $cLI = $clicked.closest('li');
var $cSpan = $clicked.closest('span');
var todoText = $cLI.clone().children().remove().end().text();
var getID = $cLI.attr('id');
$.ajax({
//codes
}
});
}
看到他们是一样的,但当然除了ajax部分,我没有添加,因为它将是太多的代码,我不认为这些代码是任何问题.
所以我尝试这样的东西来组合它们但不起作用.
$('ol#textField').on('click', '.done-btn', doubleD('done'));
$('ol#textField').on('click', '.delete-btn', doubleD('delete'));
我试着像这样组合这个功能.所以如果参数完成,那么将调用done ajax并且参数是delete,然后将调用delete.我还想将.preventDefault()添加到函数中,但不知道如何完成它们.
function doubleD(action){
var $clicked = $(this);
var $cLI = $clicked.closest('li');
var todoText = $cLI.clone().children().remove().end().text();
var getID = $cLI.attr('id');
if(action == 'done'){
var $cSpan = $clicked.closest('span');
$.ajax({
// ajax for done
}
});
}
if(action == 'delete'){
$.ajax({
// ajax for delete
}
});
}
}
有人可以帮我一把吗?
感谢您的时间和关注.
解决方法:
问题是jQuery没有将你的参数传递给处理程序.您必须将其添加为事件数据.参考:http://api.jquery.com/on/
试试这个:
$('ol#textField').on('click', '.done-btn', { action: 'done' }, doubleD);
$('ol#textField').on('click', '.delete-btn', { action: 'delete' }, doubleD);
然后你会这样访问:
function doubleD(evt){
var action = evt.data.action; // ACCESS THE ParaMETER HERE
var $clicked = $(this);
var $cLI = $clicked.closest('li');
var todoText = $cLI.clone().children().remove().end().text();
var getID = $cLI.attr('id');
if(action == 'done'){
var $cSpan = $clicked.closest('span');
$.ajax({
// ajax for done
}
});
}
if(action == 'delete'){
$.ajax({
// ajax for delete
}
});
}
}
我不建议这样做,但你也可以像这样写:
$('ol#textField').on('click', '.done-btn', function () {
doubleD('done');
});
$('ol#textField').on('click', '.done-btn', function () {
doubleD('delete');
});
然后,你的原始doubleD函数将工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。