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 为什么jQuery选择器只应用于第一项?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 为什么jQuery选择器只应用于第一项?

Javascript 为什么jQuery选择器只应用于第一项?,javascript,jquery,html,Javascript,Jquery,Html,“我的html表单”具有可显示的可选项,如下所示: <span class="Optional Command1 Command2"> <label for="elem1">Elem 1:</label><input type="text" id="elem1" /><br /> </span> <span class="Optional Command1 Command3"> <label

“我的html表单”具有可显示的可选项,如下所示:

<span class="Optional Command1 Command2">
   <label for="elem1">Elem 1:</label><input type="text" id="elem1" /><br />
</span>
<span class="Optional Command1 Command3">
    <label for="elem2">Elem 2:</label><input type="text" id="elem2" /><br />
</span>
然而,对于Command1,它包含在上述elem1和elem2的类中,只显示第一个输入元素,但我认为jQuery选择器将同时应用这两个元素

换句话说,对于上面的html,showOptional('Command1')Javascript函数只显示Command1的第一个span,而不显示Command1的第二个span。为什么不能两者兼而有之?

这对我很有用:

function showOptional(commandName) {
   $('.Optional').hide();  // clear out optional inputsinputs
   $('.Optional.' + commandName).show();  // show relvant 
}

showOptional('Command1');​
小提琴:


但是,您最初的方法也适用于我:


我刚刚运行了一个,下面的代码比您最初的方法和我上面的建议更快:

function showOptional(commandName) {
   $('.Optional').hide().filter('.' + commandName).show();
}

您的代码应该同时显示这两者。如果不是的话,还有其他一些问题。我看不到任何东西会阻止它工作,事实上它对我有效:。是否有其他代码可能正在删除这些类?它们被函数中的
.hide()
隐藏。请注意,如果将小提琴中的代码更改为将“Command2”或“Command3”传递给函数,则只会显示其中一个跨距,如果传递其他字符串,则不会显示任何跨距,因此所显示的代码肯定有效,问题一定出在其他地方。如果您想在它们开始隐藏时看到它工作:另外,我喜欢您连接这两个类的方式。我最初尝试过,但我认为两个类之间应该有一个空格,所以它对我不起作用(我上次使用JS&jQuery已经很久了,我想我忘了很多)@JHarri如果第二类元素是第一类元素的后代,那么应该在其中放置一个空格。要在同一元素上测试两个类,可以使用无空格语法。
function showOptional(commandName) {
   $('.Optional').hide().filter('.' + commandName).show();
}