jQuery按属性值

时间:2016-07-26 16:50:56

标签: javascript jquery html css dom

是否可以通过它的属性值来获取/选择元素,就像使用属性值一样:

$('[attribute="value"]')

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

$('#foo').prop('my-property', 'value');

然后我想找到一个属性为'my-property'并且值为'value'的元素。

1 个答案:

答案 0 :(得分:7)

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

某些属性是属性的反映,这意味着设置属性会设置属性,这允许您使用属性选择器。例如,fs元素的const fs = require('fs'); const path = require('path'); let filename = 'mainisp.jpg'; let src = path.join(__dirname, filename); let destDir = path.join(__dirname, 'test'); fs.access(destDir, (err) => { if(err) fs.mkdirSync(destDir); copyFile(src, path.join(destDir, filename)); }); function copyFile(src, dest) { let readStream = fs.createReadStream(src); readStream.once('error', (err) => { console.log(err); }); readStream.once('end', () => { console.log('done copying'); }); readStream.pipe(fs.createWriteStream(dest)); } 属性反映了其input属性(其defaultValue属性不是)。

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

重新编辑:

  

例如,我使用jQuery设置了一个属性:

value

不,没有办法直接选择该属性,您需要上面提到的value建议:

$('#foo').prop('my-property', 'value');

您可以考虑使用filter属性:

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

然后

data-*

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

注意:jQuery的$("#foo").attr("data-my-property", "value"); 函数是var list = $("[data-my-property='value']"); 属性的简单访问器,这是一种持续的误解。它不是。它通过jQuery管理与元素关联的数据缓存,该属性从data属性初始化但与它们断开连接。特别是,data-*不允许您稍后通过data-*选择器找到它。