Jquery - игнорировать событие, если div имеет определенный класс? - PullRequest
0 голосов
/ 21 декабря 2011

Быстрый вопрос - но мне было интересно, как лучше всего достичь следующего - У меня есть этот скрипт -

 $('.trebBtn div').live('tap',function(event) {
   $('.trebBtn div').removeClass('selected');
   $(this).addClass('selected');

});

Он в основном просто переключает состояния на несколько отдельных элементов div, которые заключены в элемент div .trebBtn.

Это хорошо работает, но я не хочу, чтобы что-то происходило, когда щелкали по последнему содержащемуся div. У него есть класс .search - есть ли способ, которым вышеприведенные инструкции могут быть проигнорированы при нажатии только на этот div?

Приветствие Пол

Ответы [ 4 ]

4 голосов
/ 21 декабря 2011

Использование :not() не позволит прикрепить событие к событию ...

$('.trebBtn div:not(.search)').live('tap',function(event) {
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});
1 голос
/ 21 декабря 2011

Я бы использовал delegate или on вместо этого, поскольку live устарело.

$('.treBtn').delegate('div:not(.search)', 'tap', function(event) {
   alert('div clicked'); 
});

Вот скрипка с обработчиком события click, поскольку я не могу проверить его с событием tap.

1 голос
/ 21 декабря 2011

Посмотрите на jQuery's is.http://api.jquery.com/is/

$('.trebBtn div').live('tap',function(event) {
    if ( $(this).is(".search") ) return false;
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});

Другой способ: с помощью :not селектор http://api.jquery.com/not/

$('.trebBtn div:not(.search)').live('tap',function(event) {
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});

или hasClass: http://api.jquery.com/hasClass/

$('.trebBtn div').live('tap',function(event) {
    if ( $(this).hasClass(".search") ) return false;
    $('.trebBtn div').removeClass('selected');
    $(this).addClass('selected');
});
0 голосов
/ 21 декабря 2011
$('.trebBtn div').live('tap',function(event) {
   if($(this).hasClass('search') == false){
     $('.trebBtn div').removeClass('selected');
     $(this).addClass('selected');
   }

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...