hasClass («отключен») не работает после .addClass («отключен»)

0

При выбранной проверке hasClass корректно работает.

<div class="row dis">
    <input class="contact button selected" value="Contact Us">
</div>

Однако, если я удаляю выбранный через jquery:

<div class="row dis">
    <input class="contact button" value="Contact Us">
</div>

if (!$('.dis > .contact').hasClass('disabled')) {
    $("input.contact").click(function() {

        alert('---');
        $('.contact').addClass('disabled');

    });
}

hasClass все еще не находит отключенный класс после $('.contact').addClass('disabled'); ,

Итак, я хочу только первое предупреждение.

Демо-версия:

http://jsfiddle.net/dWGNJ/2/

  • 2
    $('.dis > .contact').hasClass('disabled') возвращает соответствующие элементы прямо тогда . Он не будет автоматически связываться с новыми элементами, поскольку к ним добавлен класс. Вы можете связать «all» .dis > .contact (и проверить класс в обработчике) и / или, возможно, лучше использовать делегированные события .
  • 0
    Вам нужно использовать делегирование событий с .on() если вы привязываетесь к классам, которые могут динамически меняться.
Показать ещё 6 комментариев
Теги:

2 ответа

0
Лучший ответ

Вы могли бы сделать это вот так.

$('input.contact').on('click',function(){

    if( !$(this).hasClass('disabled') )
    {
        alert('---');
        $(this).addClass('disabled');
    }
});

В основном, когда input.contact щелкают, проверьте, если он имеет класс .disabled - если это не то вызвать alert и добавить класс .disabled - который, в свою очередь, предотвращает его от запуска второй раз, когда он щелкнул

Или у вас может быть несколько более элегантный способ сделать это:

$('.dis').on('click','input.contact:not(.disabled)',function(){
    alert('---');
    $('.contact').addClass('disabled');
});

Та же концепция.

  • 0
    @loops, это не тот результат, который ты ищешь? jsfiddle.net/dWGNJ/3
0

При .disabled JS нет элемента .disabled, поэтому нет .contact с click().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню