在jQuery中,你能做到这样的事情:
function f(b) {
return $("<input></input>")
.addClass("test")
.if(b, function() {
$(this).attr("disabled", true).addClass("example");
})
.val("test");
}
而不是:
function f(b) {
var input = $("<input></input>").addClass("test");
if (b) {
input.attr("disabled", true).addClass("example");
}
return input.val("test");
}
实际上,这只是一种语法糖。但是很有用。特别是在创作大型Ajax应用程序时。
此功能是否计划用于下一个版本?
答案 0 :(得分:1)
请参阅Ben Alman的这个chainable iif插件。
实施例
$('div')
.append( '1' )
.iff( my_test, 'foo' )
.append( '2' )
.end()
.append( '3' );
另一种方式是作为上述帖子的评论员解释here
实施例
$(this)[$(this).hasClass("myClass")?"hide":"show"]();
答案 1 :(得分:1)
不,没有“条件”方法或其他东西。我不认为像这样的方法会把它变成核心,它就像是矫枉过正的不是吗?例如:
function f( b ) {
return $( '<input>', {
'class': 'test',
disabled: !!b, // alternate: b === 'something' ? true : false
value: 'test'
});
}
这只会将b
变量转换为布尔值并将其传递给disable attribute
。我想你可以在像.if()
这样的方法有用的所有场合创建类似的构造。
答案 2 :(得分:1)
我认为这看起来并不糟糕:
function f(b) {
return $("<input></input>")
.addClass("test")
.attr("disabled", b ? true : false)
.addClass(b ? "example" : "")
.val("test");
}