我想使用jQuery有条件地添加一个属性:
var $this = this
.append(...)
...
if (someCondition)
this.attr(...)
return $this;
这个单一的愚蠢条件属性添加打破了我的jQuery方法调用链的美妙。但是,如果.attr(someAttr, null)
删除了地址someAttr
:
return this
.append(...)
....
.attr(someAttr, someCondition ? someValue : null);
所以问题是:.attr(someAttr, null)
是否会删除属性someAttr
?
答案 0 :(得分:1)
它不会删除属性,但它应该可以清除其值。虽然可以确定您可能希望将其设置为空字符串。
.attr(someAttr, someCondition ? someValue : '');
或者你可以传递一个运行条件的函数:
.attr(someAttr, function(i,attr){ return someCondition ? someValue : ''; });
答案 1 :(得分:1)
要使用jquery删除属性,请使用.removeAttr。
根据this answer,从1.3开始,至少使用null实际上会导致重载函数只调用.attr(attributeName)
,返回当前值。
要设置空值,请使用.attr(attributeName, '')
对于条件添加属性,请使用
var val = $("#selector").attr(attributeName); // the current value, undefined if not set
$("#selector").attr(attributeName, val ? val : valToSet);
// if the value is set, use it, otherwise pass the default in
答案 2 :(得分:0)
我不知道,但如果您要删除属性,为什么不使用removeAttr
?