2

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

<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 -Ver : 1.7.2 浏览器 : IE8

更新: IE 控制台中的错误:

 'null' is null or not an object 

在上述行

4

4 回答 4

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 的函数。

于 2012-07-28T09:03:18.173 回答
0

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

于 2012-07-28T08:56:59.223 回答
0

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

我认为是因为 $ - 函数并返回对象,但如果没有 jQuery,则 $(str) 返回 null。

于 2012-07-28T09:02:33.973 回答
0

我猜选择器在 IE8 中以某种方式损坏,尝试 [type='checkbox'],无论如何应该更快

    $("input[name='isClubMember'][type='checkbox']").mousedown(function() {
于 2012-07-28T09:05:24.343 回答