2010-03-23 182 views
1

我有一個鏈接列表。這些鏈接是指向同一頁上的表的鏈接。我想要做的是我在列表中點擊的任何鏈接都會顯示相應的表格並隱藏所有其他鏈接。JQuery:哪個元素被點擊?

無需添加不同的ID /類列表及其對應表中的每個環節,有沒有辦法找出點擊了哪個元素和show()其表?

從我理解的JQuery返回一個數組對象的選擇器。我怎樣才能找出數組被點擊的元素?

我試着使用event.which但我有點失落。

非常感謝幫助!

+0

你可以發佈樣本標記嗎?列表中的鏈接是否與其他元素中的表格具有相同的順序?需要某種方式來聯繫他們,即使只是通過索引。 – 2010-03-23 23:13:31

回答

2

CSS:

<style type="text/css"> 
    table {display:none;} 
</style> 

腳本:

$(document).ready(function() { 

     $.each($('a'), function(i) { 

      var link = $(this); 

      link.click(function() { 

       $('table').hide().eq(i).fadeIn(); 
      }); 

     }); 
    }); 

HTML:

<ul> 
    <li><a href="#">first</a></li> 
    <li><a href="#">second</a></li> 
    <li><a href="#">third</a></li> 
</ul> 

<table> 
    <tr> 
     <td>first</td> 
    </tr> 
</table> 
<table> 
    <tr> 
     <td>second</td> 
    </tr> 
</table> 
<table> 
    <tr> 
     <td>third</td> 
    </tr> 
</table> 
+0

海報特意問:「無添加不同的ID /類列表中的每個環節和其對應的表」 – 2010-03-23 23:21:07

+0

我更新後不使用任何類名 – XGreen 2010-03-23 23:25:26

+0

這個完美的作品。但在我實現這個之前,我想了解jQuery如何做一些事情。爲什麼你必須使用$ .each($('a'),function(i){..}); ?而不僅僅是$('a')。click(function(){}); 。 當你傳遞一個參數(在這種情況下變量「我」)你怎麼知道它是什麼?香港專業教育學院傳遞一個參數去那種功能時所看到的僅僅是「事件」 .. 最後,$(「表」)隱藏()等式(1).fadeIn()。 爲什麼我們應該再次調用hide(),如果它已經通過CSS隱藏了?爲什麼不$('table')。eq(i).fadeIn()工作? 對於新手問題抱歉,在jquery中花了很長時間。 – cp3 2010-03-24 19:50:43

1

$( 'A')點擊附加一個單一事件的元素但每種(等同。在C#中的foreach)遍歷選擇器的所有匹配元素

每個函數都有一個內置的功能,將「i」變量作爲索引添加到這些元素中。

,你可以使用很容易重新創建(i = 0;我< bla.length;我++)......但每個人都有這一切裏面。

最後,我已經設置所有表隱藏在CSS中,並在鏈的起始處使用隱藏功能,如果我不作爲點擊的結果,因爲點擊成爲顯示:塊,然後如果我點擊第二個鏈接,則第二個表格變得可見,第一個表格也不會被隱藏。

所以躲確保每個表是隱藏的,唯一的,我後來變成顯示的指標相匹配的。

+0

感謝您花時間向我解釋! :) – cp3 2010-03-24 21:57:44