[英]Trigger a jQuery Function when linked is clicked
我有一個約有20個項目的比較表。 我希望在單擊鏈接時將顯示有關該項目的更多信息。 我可以使用以下功能來做到這一點:
$(function(){
$('.show').click(function() {
$('#keywords').fadeIn('slow');
});
});
但是,正如我提到的,有二十項,重復上面的代碼可能很麻煩。
如何創建一個函數,該函數將在單擊的鏈接下方顯示div? 最重要的是,如果div打開或可見,並且單擊了另一個項目,我希望另一個項目關閉或淡出,然后另一個顯示。
這是我的部分HTML代碼:
<tr class="second">
<td class="cat" style="width: 33%;">
<div>
<a class="show" href="#"> Mobile Keywords</a>
</div>
<div id="keywords" class="hide">
p>Info Here</p>
</div>
</td>
<td style="width: 33%;">
<i class="icon-ok"></i>
</td>
<td class="" style="width: 33%;">
<i class="icon-ok"></i>
</td>
</tr>
<tr class="second">
<td class="cat" style="width: 33%;">
<div>
<a class="show" href="#">Another Category</a>
</div>
<div id="category-2" class="hide">
p>Info Here</p>
</div>
</td>
<td style="width: 33%;">
<i class="icon-ok"></i>
</td>
<td class="" style="width: 33%;">
<i class="icon-ok"></i>
</td>
</tr>
我認為可以使用this
屬性完成this
但是由於我對JS不夠熟悉,因此我不知道如何實現this
。
總結:如何在此表中單擊鏈接,然后該鏈接顯示相應的div,而不必為每個項目創建重復的代碼?
嘗試
$('.show').click(function() {
$('.hide').hide();
$(this).closest('td.cat').find('.hide').fadeIn();
});
編輯:根據問題的要求添加了隱藏功能。
在上面的代碼中, this
引用了觸發click事件處理程序的元素(clicked錨元素)。
然后, this
其包裝在jQuery對象中,然后使用.closest
方法遍歷DOM樹直到一個共同的祖先,從那里找到要顯示的隱藏元素。
第一行中的$('.hide').hide()
是不言自明的,它在對要顯示的對象的fadeIn
進行動畫處理之前,用hide
類隱藏了所有元素。
使用您的HTML標記,這可能會起作用。 僅當當前顯示的div不相同時才隱藏它並顯示所需的元素。
$(function(){
$('.show').click(function() {
if ( !$(this).hasClass('shown') )
{
$('.shown').removeClass('shown').parent().siblings('div').hide();
$(this).addClass('shown').parent().siblings('div').fadeIn('slow');
}
});
});
編輯 :工作代碼。
$(function(){
$('.show').click(function() {
$('.hide').hide();
$(this).parent('div').next('div').fadeIn('slow');
});
});
使用它(如您所料),查找其父div,然后查找其第一個同級div。
編輯以包括隱藏功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.