2017-04-06 61 views
0

我有一个下拉列表,以及默认使用css的display:none的元素列表。 目前,当从下拉列表中选择的元素它改为display:block优雅的方式来返回元素显示:无?

我缺少的是什么,是一次新的选择如何改变元素display:none。我知道我可以写一个循环来不断检查每个元素并将其更改为display:none,但这看起来很麻烦。 我真正的问题有大约100个元素,当它们中的99个已经被隐藏时,重新隐藏所有这些元素似乎很浪费。

好奇在jQuery(或javascript)中最优雅的方式是做什么。什么,我有一个小提琴是在这里:

https://jsfiddle.net/3w66k51z/4/

谢谢!

+1

你的小提琴是否工作? – Paul

+0

好现场@保罗现在是! – Acoustic77

回答

1

,让你知道当前显示的项目(如果有的话),并隐藏只是一个元素你可以添加状态。我知道你不想隐藏所有项目,当他们大多数已经被隐藏。

(我想你真正的问题涉及到更多的隐藏物品比小提琴如果没有 - 也许即便如此 - 这可能是一个不成熟的优化,并没有什么错与对所有调用.hide()或什么物品。)

+0

艾伦,这正是我的问题。我真正的问题比隐藏的小提琴还隐藏了大约60个隐藏物品,重新隐藏已隐藏的每个物品似乎是浪费。而且,一次只能显示一个项目。 – Acoustic77

+0

@ Acoustic77太好了。我在你的小提琴的叉子上做了这个改变,并更新了我的答案以链接到它。 https://jsfiddle.net/zdobry1r/2/ –

+1

谢谢!我认为这是更快的,但现在我非常好奇,检查与如果隐藏所有的相对速度。我要去这个答案,如果我能够比较它们,会报告回来! – Acoustic77

0

创建你的元素的数组然后创建一个函数来隐藏所有元素,但不是你想要显示的元素。

5

我已在您的.show()调用之前添加了$(".sReport").hide();以隐藏所有元素。

jQuery.hide() will set the element's display to none

jsfiddle

+1

这似乎很高雅!我会花点时间看看其他人是否有特别有趣的事情,然后将你的答案标记为已接受。 – Acoustic77

+2

@ Acoustic77因为你不会觉得隐藏所有元素或只有一个区别,IMO这是最干净的方式。如果你想要更多的优雅,你可以使用淡入淡出的过渡(例如https://jsfiddle.net/c5rcdut5/)。 – kosmos

+0

我同意这是更清洁,但我的直觉告诉我它是以一些速度的代价。你说得对,它可能不会。我很想看到一个优化比较 – Acoustic77

相关问题