使用jQuery有条件地设置属性

mat*_*atk 4 jquery

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

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

if ([condition]) {
    $(element).attr('myAttr', 1);
}
Run Code Online (Sandbox Code Playgroud)

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

$(element).val('99').attr('myAttr', 1, [condition]);
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*gio 10

那么你可以使用:

$(element).val('99').attr('myAttr',[condition] ? 1 : $(element).attr('myAttr'));
Run Code Online (Sandbox Code Playgroud)

在这里演示

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

在这里演示

请注意,正如@FrédéricHamidi所提到的,这个选项2 可能会破坏旧版jQuery中的链.但是从jQuery 1.7.2开始

  • 如果条件为假,OP从不说该值为"0" (3认同)
  • @ArunPJohny然后欢迎他将其改为想要的价值. (2认同)

Fré*_*idi 7

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

$(element).val("99").attr("myAttr", function() {
    if (condition) {
        return 1;
    }
});
Run Code Online (Sandbox Code Playgroud)

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