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>