如果我有单选按钮:
<input id="y0" type="radio" name="myRadioBtns" value="a" checked> <label for="y0"></label>
<input id="y1" type="radio" name="myRadioBtns" value="b"> <label for="y1"></label>
<input id="y2" type="radio" name="myRadioBtns" value="c"> <label for="y2"></label>
单选按钮可能已经绑定了一个更改事件处理程序,如下所示:
$('input[name='myRadioBtns']').change(function() {
//EVENT HANDLER
});
我需要检查单选按钮是否已经绑定了“更改”事件处理程序。
我的问题是如何检查单选按钮是否已绑定“更改”事件处理程序?
答案 0 :(得分:2)
您可以通过以下方式获取绑定事件:
.data('events')
答案 1 :(得分:2)
如果要在绑定另一个事件之前测试是否已绑定更改事件,请使用:
var $el = $('input[name='myRadioBtns']');
if( ! ($el.data('events') && $el.data('events').change) ) {
$el.change(function() {
//EVENT HANDLER
});
}
答案 2 :(得分:0)
此外,您可以绑定多个名称空间更改事件,每个事件都执行不同的操作。例如,如果您正在编写需要将事件绑定到元素的jQuery插件,但不删除可能已在页面上设置的任何现有事件。
每当我编写jQuery插件时,我都会确保所有事件都绑定在这样:
$(":checkbox").on("change.myNamespace", function(){
//Do Stuff - this won't replace existing change events on checkboxes!
});