使用jQuery有条件地设置属性

时间:2013-09-26 12:50:49

标签: jquery

有没有办法使用jQuery有条件地设置属性?例如,我想简化这个:

$(element).val('99');

if ([condition]) {
    $(element).attr('myAttr', 1);
}

这有效,但迫使我打破了方法调用的链接。相反,我更喜欢这样的事情:

$(element).val('99').attr('myAttr', 1, [condition]);

因此仅在条件为真时才设置属性。我该怎么做?

3 个答案:

答案 0 :(得分:10)

你可以使用:

$(element).val('99').attr('myAttr',[condition] ? 1 : $(element).attr('myAttr'));

演示here

选项2,只是:$(element).val('99').attr('attr',[condition] ? 1 : undefined)

演示here

请注意,此选项2,如@FrédéricHamidimentioned,可能会破坏旧版jQuery中的链。但是来自jQuery 1.7.2

答案 1 :(得分:7)

如果您不想在条件为false时重置属性值,则可以使用the form of attr() that takes a function

$(element).val("99").attr("myAttr", function() {
    if (condition) {
        return 1;
    }
});

不返回函数中的任何内容(或返回等效的undefined)将保持属性值不变。

答案 2 :(得分:1)

试试这个,

var attrValue=[condition] ? 1 : 0;
$(element).val('99').attr('myAttr',attrValue);

如果您想要链接,那么您可以chain处于条件状态,

if ([condition]) {
    $(element).val('99').attr('myAttr', 1);
}
else
{
    $(element).val('99');
}

试试这个,

$inpt=$(element).val('99');
if(true)
{
    $inpt.attr('myAttr',1);// use $inpt for setting attribute
}

Fiddle