Javascript foreach和隐藏/显示多个div
我对jQuery没有什么问题 我有多个这样的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>
<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();
}
}