2016-12-16 65 views
0

当select_type发生更改时,我想隐藏下一个.div_condition。 div(a_condition)被动态注入到页面中,因此可能会有很多这样的内容,因此需要在容器中找到下一个.div_condition(a_condition)。关于选择的更改,找到下一个div并隐藏

的HTML ...

<div class="a_condition">         
    <div class="form-group"> 
     <span class="badge i_condition">1</span> 
     <label class="col-sm-4 control-label" >If</label> 
     <div class="col-sm-6"> 
      <select class="form-control select_type"> 
       <option value="0">Select...</option> 
       <option value="intent|.topScoringIntent.intent=product">intent=product</option> 
      </select> 
     </div> 
    </div> 

    <div class="form-group div_condition"> 
     <label class="col-sm-4 control-label" >Condition</label> 
     <div class="col-sm-6"> 
      <select class="form-control select_condition"> 
       <option value="0">Select...</option> 
       <option value="Is">Is</option> 
       <option value="Is Not">Is Not</option> 
       <option value="Contains">Contains</option> 
       <option value="Begins With">Begins With</option> 
       <option value="Ends With">Ends With</option> 
      </select> 
     </div> 
    </div> 
</div> 

而且我已经试过这一点;但似乎无法找到/隐藏...

$(document).on('change', ".select_type", function (e) { 
    //hide or show based on selected type 
    var arr = this.value.split("|"); 
    switch (arr[0]) { 
     case "intent": 
      var $elem = $(this).nextAll(".div_condition").hide(); 
      console.log($elem) 
       //.closest(".div_condition").hide(); 
      break; 
    } 
}); 
+0

为什么'switch'语句只有一个条件? –

+0

会有很多条件 – Rob

+0

我觉得$(this)=>选择组件,所以,当你调用$(this).nextAll(“。div_condition”)时,它会发现内部选择组件,而不是从父元素中查找。 –

回答

1

如果你被包围div.a_condition每对<select> S,下面应该工作:

$(document).on('change', ".select_type", function (e) { 
    //hide or show based on selected type 
    var arr = this.value.split("|"); 
    switch (arr[0]) { 
     case "intent": 
      $(this).parents('.a_condition').find('.div_condition').hide(); 
      break; 
    } 
}); 

这里有一个JSFiddle

+0

谢谢mac,很棒! – Rob