Jquery复选框更改事件未触发

时间:2012-07-28 08:52:02

标签: javascript jquery html checkbox

我试图从过去一小时开始解决这个小问题:

<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页面中。 Sample

上面的代码在此行(在调试控制台中)出现null错误

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

JQ -Ver:1.7.2浏览器:IE8

更新:    IE控制台出错:

 'null' is null or not an object 

在上面提到的行

4 个答案:

答案 0 :(得分:7)

看起来就像你的JSP页面包含jQuery之后的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的$()函数。

答案 1 :(得分:0)

我建议你可以在复选框中添加一个类名,然后按类名找到复选框!在这种情况下似乎是ie8的问题!

答案 2 :(得分:0)

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

我认为是因为$ - function并且无论如何返回对象,但是如果没有jQuery则$(str)返回null。

答案 3 :(得分:0)

我猜选择器在IE8中以某种方式被破坏,尝试[type ='checkbox'],反正应该更快

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