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: hiddenopacity: 0元素被视为可见,