2015-09-21 43 views
0

我尝试添加类的点击的元素只如何只有在这种情况下,增加点击的元素类

但有时我看到正在选择两个项目,请你让我知道如何解决这个

这是我的代码

$(document).on('click', '.resp-tabs-list li', function(event){ 
    $(".resp-tabs-list li ").removeClass('resp-tab-active'); 
    $(this).addClass('resp-tab-active'); 
}); 

Fiddle

+4

您的代码正常工作。你说“有时”。你能告诉我们什么是有时? –

+0

无法重现。即使快速点击。你能详细说明什么时候应该发生? –

+0

好吧,点击亚洲,然后点击欧洲,你会看到他们都被显示为已分类 – Pawan

回答

0

我想提出一个假设,当你在做快速说,“有时”会发生在您的LI之间点击:

使用event.stopPropogation()确保正确的样式在您需要时发生。

Fiddle

$(document).on('click', '.resp-tabs-list li', function(event){ 
    event.stopPropagation(); 
    $(".resp-tabs-list li ").removeClass('resp-tab-active'); 
    $(this).addClass('resp-tab-active'); 
}); 
+0

这是行不通的 – Pawan

+0

然后你需要定义什么是“有时候”的意思 – Lowkase

+0

好吧,在你的小提琴中,点击亚洲,然后点击欧洲,你会发现它们都被显示为已被识别。 – Pawan

0

建议是委托事件到最近的静态家长如果可能的话。因为查找来自根的元素的时间,因此委托到document是非常昂贵的。

每次事件都从文档根开始,它会查找每个元素以查找特定的类名。

如果你没有动感的元素,那么你不需要有event delegation可言:

$(staticParent).on('click', '.resp-tabs-list li', function(event) { 
    $(".resp-tabs-list li ").removeClass('resp-tab-active'); 
    $(this).addClass('resp-tab-active'); 
}); 

有时查找它往往是因为事件委托和类名的使用缓慢。正如你所知ID选择器要快得多所以你也可以使用它。

$(staticParentID).on('click', '#resp-tabs-list li', function(event) { 
    $("#resp-tabs-list li").removeClass('resp-tab-active'); 
    $(this).addClass('resp-tab-active'); 
}); 
0

试试看看这个代码。

$('.resp-tabs-list li').on('click',function(){ 

     $(this).parent().children().removeClass('resp-tab-active'); 

     $(this).addClass('resp-tab-active'); 
    });