有没有办法使用jQuery有条件地设置属性?例如,我想简化这个:
$(element).val('99');
if ([condition]) {
$(element).attr('myAttr', 1);
}
这有效,但迫使我打破了方法调用的链接。相反,我更喜欢这样的事情:
$(element).val('99').attr('myAttr', 1, [condition]);
因此仅在条件为真时才设置属性。我该怎么做?
答案 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
}