При выбранной проверке 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');
,
Итак, я хочу только первое предупреждение.
Демо-версия:
Вы могли бы сделать это вот так.
$('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');
});
Та же концепция.
При .disabled
JS нет элемента .disabled
, поэтому нет .contact
с click()
.
$('.dis > .contact').hasClass('disabled')
возвращает соответствующие элементы прямо тогда . Он не будет автоматически связываться с новыми элементами, поскольку к ним добавлен класс. Вы можете связать «all».dis > .contact
(и проверить класс в обработчике) и / или, возможно, лучше использовать делегированные события ..on()
если вы привязываетесь к классам, которые могут динамически меняться.