2011-08-13 67 views
1

我在菜單鏈接列表上使用html的data-屬性,以便將鏈接綁定到我想要打開的內容部分的div ID當鏈接被點擊時。所以,如果我有一個名爲「#section1」的隱藏div,那麼將打開該鏈接的鏈接是。jquery - 找到一個id與另一個元素匹配的元素的最佳方法數據屬性

目前,爲了找到與此鏈接相匹配的div,我使用jquery .each()遍歷所有可能的元素,但似乎應該有更好的方法。

有沒有人知道如何簡化這段代碼,找到匹配的元素而不必在循環中運行代碼?

這裏是我的代碼:

$('a.hidden_link').click(function(){ 
    section_ident = $(this).attr('data-ident'); 
    $('.hidden_section').each(function(index) { 
     if ($(this).attr('data-ident') == section_ident){ 
      section_ref = $(this); 
      section_ref.show(); 
     } 
    }); 
}); 
+0

我不知道我是對的但你可以試試這個$(「#」 + section_indent) – Shadow

回答

1
$('.hidden_section[data-ident="' + section_ident + '"]').show(); 

一起:

$('a.hidden_link').click(function(){ 
    var section_ident = $(this).attr('data-ident'); 
    $('.hidden_section[data-ident="' + section_ident + '"]').show(); 
}); 
+0

難道不應該被'section_ident'?請修復:-) – andyb

0

這聽起來像jQuery.filter()工作!

$('a.hidden_link').click(function(){ 
    var section_ident = $(this).data('ident'); 
    $('.hidden_section').filter(function() { 
     return this.attributes["data-ident"] == section_ident; 
    }).show(); 
}); 
+0

爲什麼你會發現所有的過濾器都可以在一步完成? – epascarello

+0

http://jsfiddle.net/P9r9B/1/ - 在Chrome中速度更快,但FF速度更慢。 – Chris

+0

所以在這種情況下,沒有理由使用過濾器。 – Chris

相關問題