Javascript Jquery复选框更改事件未触发
我试图从过去的一个小时里谈论这个小问题:Javascript Jquery复选框更改事件未触发,javascript,jquery,html,checkbox,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 s
<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>
JQ-版本:1.7.2浏览器:IE8
更新:
IE控制台中的错误:
'null' is null or not an object
在上面提到的行中,我建议您可以在复选框中添加一个类名,并通过类名找到复选框!看来这就是ie8在这种情况下的问题 我认为在您的页面中jQuery没有连接。检查 我这样认为是因为$-函数并返回对象,但如果没有jQuery,那么$(str)将返回null。看起来您的JSP页面在jQuery之后包含了库 Prototype的函数接受一个id,如果找不到元素,则返回
null
,这与您正在观察的行为一致
尝试在代码中的任何地方使用jQuery
而不是$
:
jQuery("input[name='isClubMember']:checkbox").mousedown(function() {
// ...
});
或者将代码放入一个闭包中,该闭包通过$
参数中的jQuery
对象传递:
(function($) {
// The rest of your code...
})(jQuery);
jQuery(document).ready(function($) {
// The code in your 'ready' handler...
});
或者利用ready
处理程序被传递相同的$
参数这一事实:
(function($) {
// The rest of your code...
})(jQuery);
jQuery(document).ready(function($) {
// The code in your 'ready' handler...
});
您可能还希望在模式下运行jQuery,以避免在包含顺序发生变化时覆盖Prototype的
$()
函数。我猜IE8中的选择器不知怎么坏了,试试[type='checkbox'],应该会更快
$("input[name='isClubMember'][type='checkbox']").mousedown(function() {
为什么不
change
而不是mousedown
您可以发布收到的确切错误消息?即使选择器与任何内容都不匹配,mousedown()
调用也应该是安全的。@AlexBall:Evenchange
都是一样的..没有luckchange name='isClubMember'到name=isClubMember@FrédéricHamidi:我的qn更新有误。哈米迪:+1非常好。。是的,我正在使用Prototype
和scriptaculous
。。我如何克服这个问题?请建议。