快速提问 - 但我想知道实现以下目标的最佳途径是什么 - 我有这个脚本 -
$('.trebBtn div').live('tap',function(event) {
$('.trebBtn div').removeClass('selected');
$(this).addClass('selected');
});
它基本上只是在用.trebBtn div包装的许多单独的div上切换状态。
这很有效 - 但是当我点击最后一个包含的div时,我不希望发生任何事情。这有一类.search - 有没有什么方法可以在点击这个div时忽略上述说明?
干杯 保罗
答案 0 :(得分:4)
使用 :not()
可防止事件被附加...
$('.trebBtn div:not(.search)').live('tap',function(event) {
$('.trebBtn div').removeClass('selected');
$(this).addClass('selected');
});
答案 1 :(得分:1)
查看jQuery的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');
});
答案 2 :(得分:1)
我会使用delegate
或on
,因为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');
}
})