是否可以创建一个类或id的标识属性,并在具有特殊字符的jQuery选择器中分配它? 例如,我希望“身份”属性被识别为@(或任何其他特殊字符) 与识别为#
的“id”属性相同
有点
<div identity="myDiv"></div>
和Jquery
$("@myDiv").click(...);
谢谢!
答案 0 :(得分:1)
当然,请使用attribute-equals-selector
[docs]。
$('[identity="myDiv"]').click(...
请注意,这需要查看页面上的每个元素并检查属性。
如果您按类选择,或者将类添加到一组元素,并按自定义属性缩小它们,您将获得一些性能。
$('.someClass[identity="myDiv"]').click(...
或者,如果所有潜在元素都位于具有ID的容器中,那么肯定会将您的选择范围缩小到该元素的后代。
$('#someId [identity="myDiv"]').click(...
或
$('#someId').find('[identity="myDiv"]').click(...
修改强>
如果您愿意,可以在jQuery中定义自定义过滤器:
$.expr[':']['c'] = function( el, b, filter ) {
return el.getAttribute( 'identity' ) === filter[ 3 ];
};
var result = $(':c(myDiv)');
这只是使用原生getAttribute
获取identity
属性,并将其与传递的值进行比较。如果需要不同的处理,可以将其添加到过滤器功能中。
同样的规则适用于缩小性能选择范围。
答案 1 :(得分:0)
您可以尝试这样的事情
$("div").find('[identity="myDiv"]').click(function(){ });
答案 2 :(得分:0)
使用data-
属性(jsfiddle作为证据):
<div data-identity="myDiv"></div>
并像这样调用它:
jQuery('[data-identity="myDiv"]').click(function(){
alert('You just clicked me!');
});
不要试图改变原始jQuery选择器库(Sizzle)的工作方式 - 它使用CSS选择器并让它保持原样。此外,如果您不更改选择器库,这已经过优化,并且将在未来的jQuery版本中兼容。
答案 3 :(得分:0)
HTML是Mark-up Language
中的一种。在标记语言中,您可以根据需要随意定义自己的属性......但唯一的是,设计人员和Web浏览器之间应该有一个约定,以便了解如何解析特定属性。 />
因此,您可以自由定义属性并根据需要使用它们......
“patrick dw”所写的内容是正确的,但我认为最好将其写成
$('Div[identity="myDiv"]').click(...);
以确保您正在使用Div
,而不是任何其他元素。
答案 4 :(得分:0)
虽然我同意每个人关于[identity=
的内容,但另一种选择是撰写custom parameterised selector。完全矫枉过正,但它是一个选项,并且会让你写出像
$('div:myidentity(myDiv)').click(...);
答案 5 :(得分:0)
有多种方法可以选择项目:
div = $("[identity='myDiv']");
但你可以通过在你的情况下扩展表达式“:”来创建一些伪滑块:
$.extend($.expr[':'],{
identity: function(a,i,m) {
return $(a).attr('identity') === m[3];
}
});
myDiv = $(":identity(myDiv)");
比其他方式更简单,你可以使用你想要的选择器。