我不确定这是一个bug还是jQuery 1.3中的一些疯狂的新东西,我不知道,或者我是不是疯了。
我有一个包含11个复选框的表,我无法使用jQuery 1.3选择它们:
// jQuery 1.2.6
$(".myTable").find(":checkbox"); // finds 11 elements
// jQuery 1.3
$(".myTable").find(":checkbox"); // finds 1 element: the first checkbox
$(":checkbox", $(".myTable")); // finds 1 element
$('.myTable :checkbox')); // finds all 11 elements
如果我使用.find('*')
,结果是一样的:它只选择1.3中的第一个元素,所以:checkbox
没有什么特别的。
在我自己的页面上,我每次都可以重新创建它,但是当我将(貌似)相关部分粘贴到JSBin中时,它可以工作!
原始页面也包含Mootools,但我一直非常小心使用范围,并且jQ 1.2.6没有任何问题,所以我认为不是这样。还有其他想法吗?
在有人说之前,在这种情况下,使用.find()
函数比组合选择器(".myTable :checkbox"
)更方便,并且将我的所有代码更改为该样式不是'选项!
答案 0 :(得分:5)
如果它真的是一个错误,你应该访问jQuery bug跟踪器网站并报告它(见http://dev.jquery.com/)。
由于1.3刚刚发布,因此尤其如此。但是,考虑到测试的数量,我强烈建议您尝试一个非常简单的网页,看看它是否真的是jQuery的问题,或者,如您所说,可能与您的其他工具(即Mootools)进行交互。一个简单的骨骼页面只有几个复选框,1.3 jQuery和你在问题中给出的代码将是理想的。
只有当它仍然是一个问题时,我才会提出jQuery的错误,否则我会从各个讨论组开始,看看他们是否可以提供帮助。
例如,这段代码确实实际工作,所以它不太可能是jQuery的错误。
<html>
<head>
<script type="text/javascript" src="jquery-1.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(document).find(":checkbox").attr('checked',false);
$("a").click(function(event){
$(".myTable").find(":checkbox").attr('checked',true);
event.preventDefault();
});
});
</script>
</head>
<body>
<a href="http://nowhere.com/">Click me!</a><hr>
<table class="myTable"><tr>
<td><input type="checkbox">One</input></td>
<td><input type="checkbox">Two</input></td>
<td><input type="checkbox">Three</input></td>
</tr></table>
</body>
</html>