jQuery – 重复ID的选择器
我有一个页面,其中包含表单元素的重复ID。 问题是我根据切换单独显示元素。 所以这两个ID都不会同时出现。
但是,当我对该元素进行表单validation时,它总是选择代码中最后显示的元素(即使它是隐藏的)。
是否有选择器来选择可见的重复ID?
我尝试了以下但无济于事:
$('#my_element:visible').val();
由于关于此前提的无数其他问题将告诉您,在这种情况下您不能使用ID选择器#
; 你必须使用像$('div[id=foo]')
来找到它。
重复的ID是无效的HTML,几乎总是会导致脚本问题。 尽可能避免。
您必须以使用唯一ID的方式重新设计表单。 你会省去很多麻烦。
发生这种情况的原因是重复ID。 对于HTML,ID必须是唯一的才能被视为有效。 每当您不使用有效的HTML时,您的结果通常都不稳定。
在这种情况下,即使您一次只显示其中一个表单,它们仍然存在于标记中,这就是为什么代码中的最后一个始终是正在运行的表单。
由于您使用的是jQuery,我强烈建议您使用类。
您不应该有重复的ID,即使其中一个ID始终是隐藏的。 找一些其他方法来做你想要的(类名?)。
避免页面上的重复ID。 它不是有效的HTML。
不要为多个元素使用相同的id,类更好!
正如Rwwl所说,重复的ID无效。 为它们分配类而不是id。
那你可以做
alert($('.my_element:visible').val());
尝试:隐藏
$("#my_element").find(":hidden").val();
可以将元素视为隐藏,原因如下:
They have a CSS display value of none. They are form elements with type="hidden". Their width and height are explicitly set to 0. An ancestor element is hidden, so the element is not shown on the page.
注意:具有visibility: hidden
或opacity: 0
元素被视为可见,