是否可以通过它的属性值来获取/选择元素,就像使用属性值一样:
$('[attribute="value"]')
例如,我使用jQuery设置属性,如下所示:
$('#foo').prop('my-property', 'value');
然后我想找到一个属性为'my-property'
并且值为'value'
的元素。
答案 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-*
选择器找到它。