Jquery - 如果div有特定的类,则忽略事件?

时间:2011-12-21 16:34:51

标签: javascript events jquery

快速提问 - 但我想知道实现以下目标的最佳途径是什么 - 我有这个脚本 -

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

});

它基本上只是在用.trebBtn div包装的许多单独的div上切换状态。

这很有效 - 但是当我点击最后一个包含的div时,我不希望发生任何事情。这有一类.search - 有没有什么方法可以在点击这个div时忽略上述说明?

干杯 保罗

4 个答案:

答案 0 :(得分:4)

使用 :not() 可防止事件被附加...

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

答案 1 :(得分:1)

查看jQuery的ishttp://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');
});

或使用hasClasshttp://api.jquery.com/hasClass/

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

答案 2 :(得分:1)

我会使用delegateon,因为live已被弃用。

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

这是一个带有click事件处理程序的fiddle,因为我无法使用tap事件对其进行测试。

答案 3 :(得分:0)

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

})