Jquery复选框更改事件未激发

Jquery Checkbox change event not firing

本文关键字:事件 复选框 Jquery      更新时间:2024-05-09

我正试图解决过去一小时的这个小问题:

<script type="text/javascript">
$(document).ready(function(){        
    $("input[name='isClubMember']:checkbox").mousedown(function() {
         if (!$(this).is(':checked')) {
            this.checked = confirm("Are you sure?");
            $(this).trigger("change");
         }
    });
 });
</script>

有趣的是,这在JSFiddle中有效。。但在我的jsp页面中没有。样品

上面的代码在这一行(调试控制台中)给了我null错误

 $("input[name='isClubMember']:checkbox").mousedown(function() {

JQ-版本:1.7.2浏览器:IE8

更新:IE控制台错误:

 'null' is null or not an object 

在上述行

看起来就像您的JSP页面在jQuery之后包含了Prototype库。

Prototype的$()函数获取一个id,如果找不到元素,则返回null,这与您观察到的行为一致。

尝试在代码中处处使用jQuery而不是$

jQuery("input[name='isClubMember']:checkbox").mousedown(function() {
    // ...
});

或者将代码放入一个闭包中,该闭包在$参数中传递给jQuery对象:

(function($) {
    // The rest of your code...
})(jQuery);

或者利用ready处理程序被传递相同的$参数的事实:

jQuery(document).ready(function($) {
    // The code in your 'ready' handler...
});

您可能还希望在noConflict模式下运行jQuery,以避免在包含顺序发生变化时覆盖Prototype的$()函数。

我建议,您可以在复选框中添加类名,然后通过类名找到复选框!在这种情况下,这似乎就是ie8的问题所在!

我认为在您的页面中jQuery没有连接。检查

我这么认为是因为$-function和无论如何都会返回object,但如果没有jQuery,那么$(str)就会返回null。

我想选择器在IE8中不知怎么坏了,试试[type='checkbox'],无论如何都应该更快

    $("input[name='isClubMember'][type='checkbox']").mousedown(function() {