Javascript foreach和隐藏/显示多个div

Javascript foreach和隐藏/显示多个div,javascript,jquery,Javascript,Jquery,我对jQuery没有什么问题 我有多个这样的div: <input id="amount_sell" onkeyup="cal_sell()" value="" placeholder="Amount" type="text"> <div id="all"> <ul> <li id="USD">...</li> <li id="USD">...</li>

我对jQuery没有什么问题

我有多个这样的div:

<input id="amount_sell" onkeyup="cal_sell()" value="" placeholder="Amount" type="text">

<div id="all">
    <ul>
        <li id="USD">...</li>
        <li id="USD">...</li>
        <li id="USD">...</li>
        <li id="EUR">...</li>
        <li id="EUR">...</li>
    </ul>
</div>
我想当有人选择美元时,只会显示美元ID,如果我选择EUR all
  • ID=USD
    将隐藏并显示EUR
  • 但当我使用这个选项时,当我选择EUR时,所有EUR的
  • 都将被隐藏,美元也是如此


    请帮助我解决此问题,谢谢。

    更改此部分代码:

     $('#all #'+currency).each(function(index, item){    
        $(item).hide();
        }); 
    
    作者:

    您只是忘记了通过代码这一部分中的
    变量更改
    货币

    请简化:

     <div id="all">
     <ul>
        <li class="USD">...</li>
        <li class="USD">...</li>
        <li class="USD">...</li>
        <li class="EUR">...</li>
        <li class="EUR">...</li>
       </ul>
    </div>
    

    如果您正在使用
    选择
    ,这样做会更容易。我选择了数据属性而不是类

    HTML

    <li data-id="USD">USD</li>
    <li data-id="USD">USD</li>
    <li data-id="USD">USD</li>
    <li data-id="EUR">EUR</li>
    <li data-id="EUR">EUR</li>
    

    首先,您不需要使用带有多个jQuery选择器的for-each。 您可以直接使用:

     $("#all #" + currency).hide() or show()
    
    其次,each item值已经是jQuery包装的DOM元素,因此您可以使用

    item.show()
    item.hide();
    
    最后,在同一个类中显示和隐藏同一个元素。您需要使用not选择器

    因此,一切都将是:

    for (key in convert) {
        if(key == currency) {
            $('#all #'+currency).show()
        } else {
            $('#all li:not(#'+currency+')').hide();
        }
    }  
    

    id
    s是唯一的。你的不一样。当我使用课堂时。。。我正在寻找使其工作的方法您的代码不完整,我们无法帮助您这样做现在它已经完成,我刚刚修改了它我同意@Andy,如果您在这里为id=“USD”和id=“EUR”使用一个类而不是id,那么它会很好。默认情况下,如果您使用ID,它将只获得第一个ID组合,在您的情况下是第1个和第4个。我接受了答案:)我无法投票,我是新的:)
    $('select').on('change', function () {
      var option = $('select option:selected').val();
      $('li').show();
      $('li[data-id!="' + option + '"]').hide();
    });
    
     $("#all #" + currency).hide() or show()
    
    item.show()
    item.hide();
    
    for (key in convert) {
        if(key == currency) {
            $('#all #'+currency).show()
        } else {
            $('#all li:not(#'+currency+')').hide();
        }
    }