jQuery按属性值获取/选择元素

Sil*_*vee 4 html javascript css jquery dom

有没有办法通过它的属性值来获取/选择元素,就像使用属性值一样:

$('[attribute="value"]')
Run Code Online (Sandbox Code Playgroud)

例如,我使用jQuery设置一个属性,如下所示:

$('#foo').prop('my-property', 'value');
Run Code Online (Sandbox Code Playgroud)

然后我想找一个有财产的元素,'my-property'它有价值'value'.

T.J*_*der 9

不,选择器级别没有任何可以通过属性值选择的内容,只是(如您所知)属性值.

某些属性是属性的反射,这意味着设置属性会设置属性,从而允许您使用属性选择器.例如,input元素的defaultValue属性是其value属性的反映(其value属性不是).

否则,您可以选择您可以使用的内容filter,并将结果列表过滤为仅实际需要的元素.

重新编辑:

例如,我使用jQuery设置一个属性,如下所示:

$('#foo').prop('my-property', 'value');
Run Code Online (Sandbox Code Playgroud)

不,没有办法直接选择该属性,你需要像我filter上面的建议:

var list = $("something-that-gets-you-close").filter(function() {
    return this["my-property"] == "value";
});
Run Code Online (Sandbox Code Playgroud)

您可以考虑使用data-*属性:

$("#foo").attr("data-my-property", "value");
Run Code Online (Sandbox Code Playgroud)

然后

var list = $("[data-my-property='value']");
Run Code Online (Sandbox Code Playgroud)

选择它(内部引号对于匹配CSS标识符定义的值是可选的).请注意,属性值始终是字符串.

注意:有一种持续的误解,即jQuery的data函数是data-*属性的简单访问器.它不是.它通过jQuery管理与元素关联的数据缓存,jQuery 从属性初始化data-*但与它们断开连接.特别是,.data("my-property", "value")以后不会让你通过[data-my-property=value]选择器找到它.