javascript - 如何选择特殊属性(前缀:name ="")?

标签 javascript jquery attributes

如何使用 jQuery 选择特殊属性,例如“user:name”或“city:id”?

<div user:name="Ropstah"></div>
<span city:id="4"></div>

Javascript

//this works:
alert($('div').attr("user:name"));  // alerts 'Ropstah'

//this doesn't work:
alert($('div[user:name]').attr("user:name"));    //error
alert($('div[user\\:name]').attr("user:name"));    //error even with special character escaping...

最佳答案

This is a bug in jQuery .

你有两个选择:

  • 摆脱 : 并使用“非标准”属性(老实说,这没什么大不了的)
  • 变得更冗长,或者使用插件来获得功能:

最初,您可能必须这样做:

$('div').filter(function() {
    return $(this).attr('user:name') !== undefined;
}).whateverElse();

在速度方面,这应该与 jQuery 的 [] 选择器相当接近,因为它在库中就是这么做的。当然,每次您想要查找具有属性的元素时都需要输入更多内容,因此您可以为其编写一个插件,因为 jQuery 非常棒并且可以让您执行此类操作:

$.fn.hasattr = function(attr) {
    return this.filter(function() {
        return $(this).attr(attr) !== undefined;
    });
};

这会让你做一个更简单的事情:

$('div').hasattr('user:name').whateverElse();

或者如果你想检查属性是否等于某个东西,插件可能是:

$.fn.cmpattr = function(attr, value) {
    return this.filter(function() {
        return $(this).attr(attr) == value;
    });
};

然后你可以这样做:

$('div').cmpattr('user:name', 'Ropstah').whateverElse();

关于javascript - 如何选择特殊属性(前缀:name ="")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991282/

相关文章:

javascript - 取消选中刚刚基于javascript函数选中的复选框

javascript - 修复过度滚动时的 header 背景

javascript - 如何使用 ajax(使用 jquery)更改和运行 js 和 css(较少)文件

java - 如何让 AttributedCharacterIterator 返回给定属性的运行?

javascript - Chrome 29 窗口。触摸

javascript - 通过 Id 选择隐藏的表单元素

javascript - 将数组数据推送到 knockout 实用程序 foreach 中

javascript - jQuery Timepicker 和时间舍入问题

python - 使用 python-xarray 从多维 netcdf 文件中提取单个变量,同时保留属性/元数据

C# DefaultValue 属性不起作用