3

我不确定这是一个错误还是只是 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",并且将我的所有代码更改为该样式不是一种选择!

4

1 回答 1

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>
于 2009-01-19T03:54:03.407 回答