jQuery 1.3只选择第一个元素

nic*_*ckf 3 jquery jquery-1.3

我不确定这是一个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
Run Code Online (Sandbox Code Playgroud)

如果我使用结果是相同的.find('*'):它只选择1.3中的第一个元素,所以它没有什么特别的:checkbox.

在我自己的页面上,我可以每次都重新创建它,但是当我将(看似相似的)相关部分粘贴到JSBin中时,它可以工作!

原始页面也包含了Mootools,但是我一直非常小心使用范围,并且jQ 1.2.6没有任何问题,所以我认为不是这样.还有其他想法吗?

在有人说之前,在这种情况下使用.find()函数比组合的selector(".myTable :checkbox")更方便,并且将我的所有代码更改为该样式都不是一个选项!

pax*_*blo 5

如果它确实是一个错误,您应该访问jQuery错误跟踪器站点并报告它(请参阅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>
Run Code Online (Sandbox Code Playgroud)