Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回要显示的元素的优雅方式:无?_Javascript_Jquery_Html_Css_Display - Fatal编程技术网

Javascript 返回要显示的元素的优雅方式:无?

Javascript 返回要显示的元素的优雅方式:无?,javascript,jquery,html,css,display,Javascript,Jquery,Html,Css,Display,我有一个下拉列表和一个元素列表,使用css默认为display:none。 当前,当从下拉列表中选择某个元素时,该元素将更改为display:block 我缺少的是,一旦选择了一个新元素,如何将该元素更改回display:none。我知道我可以编写一个循环来不断检查每个元素,并将其更改为display:none,但这似乎很麻烦。 我真正的问题是大约有100个元素,当99个元素已经被隐藏时,重新隐藏所有元素似乎是浪费 好奇在jQuery(或javascript)中实现这一点最优雅的方式是什么。这里

我有一个下拉列表和一个元素列表,使用css默认为
display:none
。 当前,当从下拉列表中选择某个元素时,该元素将更改为
display:block

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

好奇在jQuery(或javascript)中实现这一点最优雅的方式是什么。这里是我的一把小提琴:


谢谢

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

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

我添加了
$(.sReport”).hide()以隐藏所有元素

我添加了
$(“.sReport”).hide()以隐藏所有元素


您可以添加状态,以便知道当前显示的项目(如果有),并仅隐藏该元素。我知道你不想隐藏所有的物品,因为它们中的大部分已经被隐藏了


(我想你真正的问题涉及的隐藏项比小提琴要多得多。如果不是,甚至可能是这样,这可能是过早的优化,对所有项调用
.hide()
或其他任何东西都没有错。)

你可以添加状态,以便知道当前显示的项(如果有)只隐藏一个元素。我知道你不想隐藏所有的物品,因为它们中的大部分已经被隐藏了


(我想你真正的问题涉及的隐藏项比小提琴多得多。如果不是,甚至可能是这样,这可能是一个过早的优化,对所有项目调用
.hide()
或其他任何东西都没有错。)

你的小提琴工作正常吗?好点@Paul现在!你的小提琴拉得好吗?保罗,现在拉得好!那看起来真是太优雅了!我会花点时间看看其他人是否有什么特别有趣的东西,然后将你的答案标记为已接受。@声学77因为你不会感觉到隐藏所有元素或仅隐藏一个元素之间有任何区别,我认为这是最干净的方法。如果你想要更优雅,你可以使用渐变(例如)。我同意这更干净,但我的直觉告诉我,这是以速度为代价的。你说得对,也许不是。我很想看到一个看起来非常优雅的优化对比!我会花点时间看看其他人是否有什么特别有趣的东西,然后将你的答案标记为已接受。@声学77因为你不会感觉到隐藏所有元素或仅隐藏一个元素之间有任何区别,我认为这是最干净的方法。如果你想要更优雅,你可以使用渐变(例如)。我同意这更干净,但我的直觉告诉我,这是以速度为代价的。你说得对,也许不是。我很想看到一个优化比较,这正是我的问题。我真正的问题是隐藏的物品比小提琴多60件,而且重新隐藏所有已经隐藏的物品似乎是浪费。而且,一次只显示一个项目。@audiotic77很棒。我在你的小提琴叉子上做了这个更改,并更新了我的答案以链接到它。谢谢我假设这会更快,但现在我对使用if检查的相对速度感到非常好奇,而不是隐藏它们。我要用这个答案,如果我能比较他们,我会报告的!艾伦,这正是我的问题。我真正的问题是隐藏的物品比小提琴多60件,而且重新隐藏所有已经隐藏的物品似乎是浪费。而且,一次只显示一个项目。@audiotic77很棒。我在你的小提琴叉子上做了这个更改,并更新了我的答案以链接到它。谢谢我假设这会更快,但现在我对使用if检查的相对速度感到非常好奇,而不是隐藏它们。我要用这个答案,如果我能比较他们,我会报告的!