2012-07-29 63 views
2

我已經做了一些研究,似乎沒有任何工作。這裏是我放在一起的JavaScript後面的HTML。我想要做的就是設置它,這樣無論何時點擊dashboard_gear_options,它都會切換適當的隱藏選項行。每個代碼塊在頁面的不同位置存在多次。我試着用這個,發現父母,下一個和孩子都無濟於事。這找到另一個div的父母,並使用jQuery切換其子女

HTML:

// start block 
<div class="content_block_holder"> 
    <div class="content_top"> 
     <div class="dashboard_gear_options"></div> 
     <div class="dashboard_gear_divider"></div> 
    </div> 
    <div class="dashboard_holder"> 
     <div class="hidden_options_row"></div> 
    </div> 
</div> 
// end block 

// start block 
<div class="content_block_holder"> 
    <div class="content_top"> 
     <div class="dashboard_gear_options"></div> 
     <div class="dashboard_gear_divider"></div> 
    </div> 
    <div class="dashboard_holder"> 
     <div class="hidden_options_row"></div> 
    </div> 
</div> 
// end block (etc..) 

JS:

$(document).ready(function(){ 
    $('.dashboard_gear_options').click(function(){ 
     $(this).parent('.content_block_holder').find('.hidden_options_row').toggle();   
    }); 
}); 

回答

2

在您選擇嘗試,而不是父母使用closest([selector])http://api.jquery.com/closest/)。它將遍歷樹並找到「content_block_holder」。 parent([selector])將只檢查直接父母並返回一個空集,如果它與提供的選擇符不匹配。

$(document).ready(function(){ 
    $('.dashboard_gear_options').click(function(){ 
     $(this).closest('.content_block_holder').find('.hidden_options_row').toggle();   
    }); 
}); 
根據您的代碼

的jsfiddle:http://jsfiddle.net/gK7yM/

+0

這樣做,我曾試圖在一個不同的配置:(這總是簡單的事情..很感謝你!我可以標記它儘管如此,但我會在計時器啓動的時候。 – 2012-07-29 16:48:35

+0

好吧,嘗試和嘗試不同的配置是學習的最佳方式,歡迎您:) – 2012-07-29 16:50:31

2

試試這個

$(this).closest('.content_block_holder').find('.dashboard_holder').find('.hidden_options_row').toggle();   
+0

沒有骰子,沒有工作。 – 2012-07-29 16:46:26

+0

這實際上是父母,但不是直接的父母,所以最接近會更合適 – 2012-07-29 16:47:10

0

Also this chain works

$(this).parent().next('.dashboard_holder').children('.hidden_options_row').toggle(); 

$(this).parent().next('.dashboard_holder').find('.hidden_options_row').toggle();