2015-09-21 70 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'); 
    });