如果我调用.attr(attributeName,null)会发生什么?属性是否已删除?

时间:2011-02-28 13:42:21

标签: jquery

我想使用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

3 个答案:

答案 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

http://api.jquery.com/removeAttr/