4

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

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

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

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

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

这样只有在条件为真时才设置属性。我该怎么做?

4

3 回答 3

10

那么你可以使用:

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

演示在这里

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

演示在这里

请注意,正如@FrédéricHamidi提到的,此选项 2 可能会破坏旧版本 jQuery 中的链条。但适用于 jQuery 1.7.2

于 2013-09-26T12:52:55.863 回答
7

如果您不想在条件为 false 时重置属性值,可以使用带函数的形式attr()

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

不从函数返回任何东西(或返回undefined,这是等效的)将保持属性值不变。

于 2013-09-26T12:54:56.223 回答
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
}

小提琴

于 2013-09-26T12:54:40.113 回答