2013-01-22 151 views
2

我想做一個簡單的方法來隱藏/顯示內容時,用戶單擊一個單選按鈕。我不想一遍又一遍地使用ID,我想用一個更通用的選擇器來使用類,這樣我就可以在整個網站中重新應用它。選擇第二個最接近的類

我想我不是在父div(.radio-show)之外找到.next .radio-show-content?

$('.radio-show input:radio').click(function() { 
     $(this).closest('div').next().find('.radio-show-content').fadeToggle(250).toggleClass('hide'); 
}); 


<div class="radio-show" > 
<label class="radio span1"> 
    <input type="radio" name="project" value="option1" checked> 
    Yes 
</label> 
<label class="radio span1"> 
    <input type="radio" name="project" value="option2"> 
    No 
</label> 
</div> 

<hr /> 
<div class="radio-show-content"><!-- yes --> 
    Show this if Yes 
</div> 
<div class="radio-show-content hide"><!-- no--> 
    Show this if No 
</div> 

回答

0

.next正在變得<hr>。真的,沒有必要上去DOM樹。你可以使用:

$(".radio-show-content").fadeToggle(250).toggleClass('hide') 

然而,這可能並不想要什麼,它不選擇特定.radio-show-content做。您可以基於單選按鈕索引進行鏈接(使用.index獲取並獲取-show-content.eq),或者只使用.hide的CSS轉換並持續切換。

+0

啊您的權利,沒有必要去了DOM樹。但是,如果我想限制只選擇NEXT 2 .radio-show-content類,該怎麼辦?例如。在同一頁面上有多個無線電對顯示/隱藏特定於離它最近的最近的.radio-show-content? – simple

+0

@簡單,聽起來相當複雜..你必須通過類鏈接單選按鈕到廣播內容,或使用相應的索引,如我在我的回答 –

0

我想你應該嘗試沒有.find()

$(this).closest('div').next('.radio-show-content').fadeToggle(250).toggleClass('hide'); 
0

這個插件正是這種寫入。 免責聲明:我寫這

http://techfoobar.com/jquery-next-in-dom/

$('.radio-show input:radio').click(function() { 
    $(this).nextInDOM('.radio-show-content').fadeToggle(250).toggleClass('hide'); 
}); 
+0

中所述注意:但在你的情況下,如果你只有一個元素匹配''.radio-show-content'',只需做一個簡單的選擇器,就像Explosion Pills所回答的那樣。在這種情況下使用插件將是一個矯枉過正的問題。 – techfoobar