2013-03-07 70 views
2

我想要5 <p>標籤,點擊後,顯示下面的<div>。我可以做到這一點,我指出每個<p>和每個<div>不同,但這會導致很多jQuery。slideToggle下一個元素

因此,在現階段,我有:

<p class="flip">Example</p> 
<div class="panel"> 
    <p>Example Panel</p> 
</div><!--End panel--> 

<p class="flip">Example</p> 
<div class="panel"> 
    <p>Example Panel</p> 
</div><!--End panel--> 

<p class="flip">Example</p> 
<div class="panel"> 
    <p>Example Panel</p> 
</div><!--End panel--> 

jQuery的我此刻是:

$(document).ready(function() { 
    $('.flip').click(function() { 
    $('.panel').slideToggle('slow'); 
    }); 
}); 

這顯然切換所有.panels一次。爲了澄清,我想第一.flip切換第一.panel.

回答

3

只需要做一些簡單的DOM遍歷選擇<div class="panel">元素相對於​​3210正確的被點擊:

$('.flip').click(function(e) { 
    $(this).next('div.panel').slideToggle('slow'); 
}); 

click內事件處理函數,this是被點擊的<p>元素。調用.next('div.panel')將選擇DOM中的下一個元素,如果它是<div>並且它的類別爲panel

+0

輝煌,非常感謝。對於.next沒有做太多的工作,從來沒有見過(e)在函數之前,它做了什麼,因爲它似乎沒有它的工作? – user2144363 2013-03-07 13:29:29

+0

@ user2144363 jQuery將其標準化的'event'對象作爲第一個參數傳遞給事件處理函數。我傳遞給'click'的匿名函數有一個參數 - 「e」 - 它將採用該參數的值。只有當你想在函數內部使用事件時才需要它 - 例如調用'.preventDefault()'來防止該事件的默認行爲 - 但是在編寫jQuery事件處理函數時總是指定它。 – 2013-03-07 13:32:30

0

我有一個問題......我想,當我點擊脈衝在IMG .act在一個

隱藏一個我找到了解決辦法,但對於noact我想找到.act

解決方案

這裏是我的代碼:

$(document).ready(function(){ 
    $('.noact').show(); 
    $('.act').show(); 
    $('.noact').click(function(){ 
     var x = $(this).next('.act') ; 
     x.slideToggle(1000); 
    }); 
    $('.act').click(function(){ 
     $('.noact').slideToggle(1000); 
    }); 
}); 
+0

據我所知,這個答案並沒有增加對原始問題答案的質量,而更適合作爲一個新問題。請考慮將這個答案及其關注問題轉化爲一個可能解決的新問題。 – 2013-09-25 22:23:46