jQuery 1.3 只选择第一个元素

发布于 2024-07-12 12:56:39 字数 780 浏览 10 评论 0原文

我不确定这是否是一个错误,或者只是 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") 方便得多,并且将我的所有代码更改为该样式不是一个选项!

I'm not sure if this is a bug or just some crazy new thing in jQuery 1.3 that I'm unaware of, or if I've just gone crazy.

I have a table with 11 checkboxes in it, and I can't select them all using 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

The results are the same if I use .find('*'): it only picks the first element in 1.3, so it's nothing peculiar to :checkbox.

On my own page, I can recreate this every time, but when I paste the (seemingly) relevant parts into JSBin, it works!

The original page also has Mootools included, but I've been very careful with scoping and there weren't any issues with jQ 1.2.6, so I don't think that could be it. Any other ideas?

And before anyone says it, using the .find() function is very much more convenient than the combined selector (".myTable :checkbox") in this case, and changing all my code to that style isn't an option!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月亮是我掰弯的 2024-07-19 12:56:39

如果这确实是一个错误,您应该访问 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>

If it's really a bug, you should visit the jQuery bug tracker site and report it (see http://dev.jquery.com/).

This is especially true as 1.3 has only just been released. However, given the amount of testing it's gone through, I'd strongly suggest you try a very simple web page to see if it's really a problem with jQuery or, as you suggest, a possible interaction with your other tools (i.e., Mootools). A bare bones page with just a couple of check boxes, the 1.3 jQuery and the code you've given in your question would be ideal.

Only if it's still an issue then would I raise a bug on jQuery, otherwise I'd start with the various discussion groups to see if they can help.

For example, this piece of code does actually work so it's unlikely to be a bug with 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文