asd*_*hak -10 html jquery jquery-selectors
Id元素在整个文档中是唯一的,没关系.这个怎么样
$("#Genders", $("#tableFor_SEARCH")).buttonset();
Run Code Online (Sandbox Code Playgroud)
和
$("#Genders", $("#tableFor_CREATE")).buttonset();
Run Code Online (Sandbox Code Playgroud)
firefox看起来还不错,这个用法可以接受所有浏览器和任何缺点吗?
注意:我尝试这种用法,因为jquery使用id选择器和radio&checkbox助手(特别是标签标签)
Bol*_*ock 12
浏览器对此很好,但它不会改变您的文档无效的事实.不要依赖这种行为来构建您的页面.你永远不会知道他们可能会选择在未来的版本中打破它.
如果您将要使用具有相同"标识符"的多个元素,为什么不使用类而不是ID?要使用的jQuery选择器没有太大区别:
$(".Genders", "#tableFor_SEARCH").buttonset(); // Or $("#tableFor_SEARCH .Genders")
$(".Genders", "#tableFor_CREATE").buttonset(); // Or $("#tableFor_CREATE .Genders")
Run Code Online (Sandbox Code Playgroud)
您无需复制ID即可处理您的案例.您可以使用类选择器来选择具有上下文的元素.在许多方面哪个更干净.见下文,
//will select element with class .Genders inside #tableFor_SEARCH
$(".Genders", "#tableFor_SEARCH").buttonset();
//will select element with class .Genders inside #tableFor_CREATE
$(".Genders", "#tableFor_CREATE").buttonset();
Run Code Online (Sandbox Code Playgroud)
为什么你不应该重复ID?
ID属性应该是唯一的,这是标准.http://www.w3.org/TR/html401/struct/global.html#h-7.5.2.ID属性的目的是在页面中唯一标识一个元素.复制时,此目的会失败.
以下是您不应复制ID的原因列表,
#Goto3网址的最后部分]<a href="#dupId">Go to That element</a>以导航到第二个重复的ID元素.http://jsfiddle.net/s27hQ/它在jQuery中如何工作?
$('#Genders')只需document.getElementById('Genders')使用jQuery对象调用并包装它.
但是当你这样做时$("#Genders", $("#tableFor_SEARCH")),它根本无法使用getElementById,内部jQuery将迭代遍历内部的每个元素#tableFor_SEARCH以找到具有ID的匹配元素#Genders.
为什么浏览器不抱怨?
从HTML观点来看,ID属性用于标记页面中的元素,您可以使用本地页面链接http://jsfiddle.net/s27hQ/导航到元素,或者从URL http:/导航到该部分/fiddle.jshell.net/s27hQ/show/light/#Goto3
浏览器对于开发人员来说是灵活和宽容的,即使是大量的HTML代码也会在大多数桌面浏览器中呈现出色.同样的方式,它确实没有抱怨有重复的ID,但它也确实不起作用.上面的项目#4和#5.
从JavaScript的角度来看,ID元素可以使用document.getElementById本机,最酷,最快,最古老的API之一来访问页面中唯一的元素.这显然没有提供访问具有重复ID的第二个元素的方法.
所以请不要使用它.
为未来的开发人员提供更好,易于维护的代码.