我试图从过去一小时开始解决这个小问题:
<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
在上面提到的行
答案 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() {