首先,我知道多个元素在单个页面中具有相同的ID是违反最佳做法的。但是在这种情况下,我需要有两个具有相同id的选择。
我看到使用这种方法取得了一些成功:
{{1}}
但是,*中包含的代码并没有给我合适的长度。
请参阅下面的笔,我已经创建了我的选择并进行了调试。
谢谢!
答案 0 :(得分:2)
问题是jQuery首先使用本机JS函数,所以当你执行$('#this_id')
时,你实际上是在调用document.getElementById('this_id')
。它不仅反对最佳实践,它实际上不会起作用......你可以循环选择并检查ID:
$('select option').each(function(){
if($(this).closest('select').attr('id')=='my_id'){
//do something
}
});
答案 1 :(得分:1)
假设您继承了HTML并且无法将ID更改为类:
请注意eq()
是一个jQuery选择器。如果您将其更改为nth-child(2)
,则您将使用CSS选择器。这可以满足您的需求:
$('#undo_redo_to:nth-child(2) option').length;
答案 2 :(得分:0)
您可以使用原生javascript来完成此操作:
document.querySelectorAll("[id=undo_redo_to]")
你可以用这样的jquery来做:
$("[id=undo_redo_to]")
这是属性选择器,因为#
- 类型选择器将在找到具有id
的第一个元素时停止搜索。
所以你可以使用普通的javascript或jquery来做到这一点,但不要这样做,因为id
应该是唯一的,如果它不是唯一的,那么HTML是无效的,它对SEO有害