2012-02-23 48 views
0

好我的HTML標記如下:尋找下一個元素:不能使用jQuery

<div class="refine_search_box"> 
    <div class="heading">Refine Search</div> 

    <div class="section_heading"><a href="#">By Size</a></div> 
    <div class="section"> 
      @Html.DropDownListFor(m => m.Size, new SelectList(Model.SizeList, "key", "value", Model.Size), "") 
    </div> 

    <div class="section_heading"><a href="#">By Sport</a></div> 
    <div class="section"> 
      @Html.DropDownListFor(m => m.Sport, new SelectList(Model.SportList, "key", "value", Model.Sport), "") 
    </div> 
</div> 

我jQuery是如下:

$(document).ready(function() { 
    $("div.section").toggle(); 

    $(".refine_search_box a").click(function (e) { 
     var $this = $(this); 
     var $div = $this.prev().nextAll(".section").first(); 
     $this.toggleClass("selected"); 
     $div.toggle(); 
     e.preventDefault(); 
    }); 
}); 

我希望發生的是在當鏈路。點擊section_heading我想讓.section div直接打開它。但我的jQuery總是沒有返回任何$ div,我認爲這會很簡單,但我顯然缺少明顯的東西。我對jQuery非常陌生,所以很抱歉,如果它的愚蠢簡單!

乾杯。

+2

我在標記中看不到類「refine_search_box」。 – gdoron 2012-02-23 11:22:15

+1

其中是'.refine_search_box a'夥計.. – jAndy 2012-02-23 11:22:52

+0

對不起,我現在添加了它,現在錯過了它,當我複製並粘貼 – 2012-02-23 11:28:06

回答

1

我認爲你需要使用.parent()的.prev而不是():

$(".refine_search_box a").click(function (e) { 
    var $this = $(this); 
    var $div = $this.parent().next(); 
    $this.toggleClass("selected"); 
    $div.toggle(); 
    e.preventDefault(); 
}); 

這是假設 '.refine_search_box' 包圍所有section_heading的div。

您也可以只使用.parent().next()只要你的HTML保持不變。

1
  • 的使用next代替nextAll
  • prev回以前的兄弟,你NEEF父:

$(".refine_search_box a").click(function (e) { 
    var $this = $(this); 
    var $div = $this.parent().next(".section").first(); //< ==== 
    $this.toggleClass("selected"); 
    $div.toggle(); 
    e.preventDefault(); 
}); 

注意,因爲我評論,我無法看到refine_search_box在標記類,也許它應該是:

$(".section_heading a").click(function (e) { 
     ... 
    }