我想解开这个事件:
$(document).on('change', $('select[name=url]'), function() {}) ;
当我使用此方法在更改事件中取消绑定此事件时,它可以工作:
$(this).off();
但是当我使用它时,它不起作用:
$('select[name=url]').off();
其次,我想在变革事件之外解除事件。
答案 0 :(得分:3)
要删除特定的委托事件处理程序,必须提供一个selector参数,其中选择器字符串必须与附加事件处理程序时传递给.on()的字符串完全匹配。
这样你就不必在onchnage回调中使用$(this).off()。此外,使用事件名称空间可确保您不解除任何不需要的事件的绑定
试试这个。
//here the namespace name is set to 'selection'
$(document).on('change.selection', 'select[name=url]', function() {
alert("Change event triggered");
})
$("button").click(function() {
$(document).off('change.selection', 'select[name=url]')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="url">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button>Unbind</button>
答案 1 :(得分:0)
事件on('change')
被绑定到文档而不是元素('select[name=url]')
。
如果要为每个元素选择设置事件更改,最好的选择是设置公共类并将更改事件绑定到类。
如果您这样做,您可以将内部和外部的事件解除绑定到更改事件