我知道解除绑定的事件已经很成熟,但由于某种原因,这种情况并不奏效。如果" trash_mode"方法被调用它将事件处理程序附加到" my_div",这样当单击这些div时,它们将从DOM中删除:
function trash_mode() {
$('#my_div').click(function remove_from_dom(){
var id = $(this).attr('id');
var use_id = "#" + id;
$(use_id).remove();
});
}
这很有效。然后,我想调用" trash_mode"方法再次从div中删除此事件处理程序。例如,我可能会尝试:
$('#my_div').off("click", "remove_from_dom");
再次调用该函数时(使用某种切换机制)。但是这不起作用...... div仍然从DOM中删除(点击事件仍然附加)。
有没有办法在" remove_from_dom"之间切换?方法(打开和关闭)每次" trash_mode"方法叫做?
答案 0 :(得分:0)
jQuery API文档说.off()
函数的第二个参数是选择器,而不是处理程序的名称。
通过在所有div的某些父元素上调用.off()
函数并使用第二个参数来选择它们,看起来你想要的最好。
$('#my_div_parent').off("click", "#my_div");
该文档还指出,.off()
功能旨在与.on()
配对,因此,如果您仍然无法删除事件处理程序,则可以尝试更改附加方式首先是事件处理程序。
答案 1 :(得分:0)
我能让这个工作的唯一方法就是在jquery' s#34; .on()"中添加一个if-else语句。方法,像这样:
<button onclick="trash_mode()">TOGGLE TRASH MODE</button>
var count = 0;
function trash_mode()
$("#my_div").on( "click", function() {
var id = $(this).attr('id');
var use_id = "#" + id;
if(count != 0){
$(use_id).remove();
count=0;
} else {
count++;
}
});
}
现在,每次单击该按钮时,它都会在启用/禁用之间切换remove()事件处理程序。