Изменение атрибута jquery, кажется, не работает
У кого-нибудь есть идеи, почему этот код не работает? Что я делаю неправильно?
JQuery 1.5.1 используется.
JS код:
$('#search_filters #discipline a').click(function(){
var checkbox = $(this).next(':checkbox');
if (checkbox.attr('checked')) {
checkbox.attr("checked", true);
} else {
checkbox.attr("checked", false);
}
$(this).children('img').toggleClass("active");
return false;
});
HTML:
<li>
<a href="#">
<img class="inactive" alt="Football" src="/images/disciplines/e9bc7681813110c/thumb.png">
</a>
<input type="checkbox" name="search_discipline[7]" value="1" class="search_discipline">
</li>
4 ответа
Я просто столкнулся с этим сам. Кажется в jQuery 1.5.1 и 1.5.2 установка checked
Атрибут немного глючит. Мне повезло больше $(':checkbox').val(boolean)
(что даже немного проще).
Обновление: после некоторого копания кажется, что инспектор webkit на самом деле не показывает checked
атрибут в DOM, но jQuery читает / пишет его правильно. Очень странно. Подходит для использования ночных сборок webkit для dev.
Значение атрибута "checked" должно быть "проверено":
if (checkbox.is (': checked')) { checkbox.attr ("проверено", "проверено"); } еще { checkbox.removeAttr("проверено"); }
Всего две полезные идеи, чтобы проверить изменение атрибутов:
- Сначала напишите простой HTML без Javascript. Это сработало? Если так, то напишите это с помощью JS
- Если вы изменили html-тег, отзовите сам атрибут, так что вы можете проверить, что ваш код был выполнен правильно. Например
alert($({your target object}).attr({the attribute which added}));
Это то, что я делаю в большинстве случаев.
Некоторые указатели:
$('#search_filters #discipline a')
будет выбирать всеa
элементы, которые происходят от#discipline
что происходит от#search_filters
, Это то, что вы делаете?Ты помнишь это?
.next()
возвращает родного братаЧто произойдет, если вы удалите
href='#'
?Ваше событие клика даже срабатывает?