2015-11-08 101 views
1

不工作jquery显示/隐藏下拉菜单时,有许多下拉与相同的类或id。 更改下拉列表影响所有元素。 请帮我不工作jquery显示/隐藏下拉

$(document).ready(function(){ 
 
    $(".gatewayname").hide(); 
 
    $(".bankname").show(); 
 
    $(".paytype").on("change", function() { 
 
\t \t var val = $(this).val(); 
 
      if (val === "bank"){ 
 
       $(".gatewayname").hide(); 
 
       $(".bankname").show(); 
 
      }else{ 
 
       $(".gatewayname").show(); 
 
       $(".bankname").hide(); 
 
      } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td><select name="paytype" class="paytype"><option value="bank">Bank</option><option value="online">Online</option></select> 
 
     <br><br> 
 
     <select class="gatewayname"><option value="paypal">Paypal</option>option value="Card"></option>Card</select><br> 
 
     <input type="text" name="bankname" class="bankname"></td> 
 
\t </tr> 
 
<tr> 
 
    <td><select name="paytype" class="paytype"><option value="bank">Bank</option><option value="online">Online</option></select> 
 
     <br><br> 
 
     <select class="gatewayname"><option value="paypal">Paypal</option>option value="Card"></option>Card</select><br> 
 
     <input type="text" name="bankname" class="bankname"></td> 
 
</tr> 
 
      
 
      
 
<tr> 
 
<td><select name="paytype" class="paytype"><option value="bank">Bank</option><option value="online">Online</option></select> 
 
<br><br> 
 
<select class="gatewayname"><option value="paypal">Paypal</option>option value="Card"></option>Card</select><br> 
 
<input type="text" name="bankname" class="bankname"></td> 
 
</tr> 
 
</table>

jsfiddle demo

回答

2

你需要使用$(本)最接近()find()方法

$(document).ready(function(){ 
    $(".gatewayname").hide(); 
    $(".bankname").show(); 
    $(".paytype").on("change", function() { 
     var val = $(this).val(); 
      if (val === "bank"){ 
       $(this).closest('td').find(".gatewayname").hide(); 
       $(this).closest('td').find(".bankname").show(); 
      }else{ 
       $(this).closest('td').find(".gatewayname").show(); 
       $(this).closest('td').find(".bankname").hide(); 
      } 
    }); 
}); 

Updated Demo

,或者您可以使用$(本)nextAll()

$(document).ready(function(){ 
    $(".gatewayname").hide(); 
    $(".bankname").show(); 
    $(".paytype").on("change", function() { 
     var val = $(this).val(); 
      if (val === "bank"){ 
       $(this).nextAll(".gatewayname").hide(); 
       $(this).nextAll(".bankname").show(); 
      }else{ 
       $(this).nextAll(".gatewayname").show(); 
       $(this).nextAll(".bankname").hide(); 
      } 
    }); 
}); 

DEMO

+0

这是工作。谢谢 – Kral

+0

@Kral欢迎您..祝您好运:) –

+0

@Kral - 请接受此答案以向其他读者表明此答案可解决您的具体问题。 – linguanerd