Изменение атрибута 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}));

Это то, что я делаю в большинстве случаев.

Некоторые указатели:

  1. $('#search_filters #discipline a') будет выбирать все a элементы, которые происходят от #discipline что происходит от #search_filters, Это то, что вы делаете?

  2. Ты помнишь это? .next() возвращает родного брата

  3. Что произойдет, если вы удалите href='#'?

  4. Ваше событие клика даже срабатывает?

Другие вопросы по тегам