jQuery 1.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" в этом случае, и изменение всего моего кода на этот стиль не вариант!

1 ответ

Решение

Если это действительно ошибка, вам следует посетить сайт отслеживания ошибок 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>
Другие вопросы по тегам