【问题标题】:not working jquery show/hide by dropdown不工作 jquery 通过下拉显示/隐藏
【发布时间】:2015-11-08 14:37:28
【问题描述】:

当有许多具有相同类或 id 的下拉菜单时,jquery 无法通过下拉菜单显示/隐藏。 当更改下拉列表影响所有元素时。 请帮帮我

$(document).ready(function(){
     $(".gatewayname").hide();
     $(".bankname").show();
    $(".paytype").on("change", function() { 
		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>
	</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

【问题讨论】:

    标签: jquery show-hide dropdown


    【解决方案1】:

    您需要使用 $(this)closest()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

    或者你可以使用 $(this)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

    【讨论】:

    • @Kral - 请接受此答案以向其他读者表明此答案解决了您的特定问题。
    猜你喜欢
    • 2016-07-29
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多