如何检查单选按钮是否已绑定“更改”事件处理程序

时间:2011-09-07 13:16:20

标签: javascript jquery javascript-events jquery-selectors jquery-validate

如果我有单选按钮:

<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
});

我需要检查单选按钮是否已经绑定了“更改”事件处理程序。

我的问题是如何检查单选按钮是否已绑定“更改”事件处理程序

3 个答案:

答案 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!
    });