2011-10-20 86 views
0

所以基本上我有幾個鏈接,當你點擊一個,它應該添加突出顯示的類。我也有一個按鈕,點擊時應隱藏突出顯示的類的鏈接。通過jQuery隱藏動態高亮的元素類

這似乎微不足道,應該很簡單,但我不明白爲什麼我的代碼不起作用。另一件事是,出於某種原因,鏈接仍然通過一次點擊小提琴。不確定它是否與jsfiddle有關,以及它如何處理外部鏈接?

這裏是我的小提琴:http://jsfiddle.net/ZPGe7/1/

回答

1

你不應該緩存jQuery對象,因爲當元件接收不同的類名稱不更新。此外,請使用event.preventDefault()來防止鏈接被跟蹤。在代碼中直接使用$('.links a.highlight')

小提琴:http://jsfiddle.net/ZPGe7/2/

$(function() { 
    $('.links a').live('click',function(ev){ 
      $('.links a.highlight').removeClass('highlight'); 
      $(this).addClass('highlight'); 
      ev.preventDefault(); //Prevent link from being followed 
    }); 
    $('#submit').live('click',function(){ 
     $('.links a.highlight').hide(); 
    }); 
});   
+0

謝謝羅布的偉大工程!所以返回false與防止默認值,區別只是阻止默認做什麼返回false做的加上它不會緩存類? – Maverick

+0

嗯......爲什麼我們不能像原始的小提琴那樣使用聲明的變量? – Maverick

+0

@Maverick在你的代碼中,你正在緩存'$('。links a.highlight')'選擇器。這導致'click'事件(綁定到'#submit')的行爲不如預期:''a.highlight'元素的「舊」列表是空的,並且在元素的類名改變時不會更新。 –