在jQuery代码中编写if / else语句感觉不对:
if ($("#test").length) {
// do smth
}
else {
// do smth else
}
是否有类似的内容:
$("#test").test(function(){
// do smth
},
function(){
// do smth else
});
答案 0 :(得分:9)
是否有类似的内容:
现在有!
(function($) {
$.fn.test = function(a, b) {
(this.length ? a : b).apply(this);
return this;
};
})(jQuery);
的工作演示
答案 1 :(得分:2)
据我所知不...但你可以在短期条件下使用三元运算符
示例:
var foo = $("#test").length ? "bar" : "baz";
编辑:使用功能时
$("#test").length ? (function() { console.log("#test available"); })() : (function() { console.log("#test not available"); })();
答案 2 :(得分:0)
根本不需要您使用的示例,因为如果没有选择任何元素,则调用的方法不会执行任何操作。
我想不出这样一种情况,即在jQuery链的中间有一个if语句,而不是像过滤器方法或每个方法那样。
<强>更新强>
我从可用性的角度来看这个。比较以下两种情况:
if ( $(".div").length ) {
console.log("We found divs");
} else {
console.log("We did not find div");
}
VS
$(".div").test(function(){
console.log("We found divs");
},function(){
console.log("We did not find divs");
});
也许jQuery方法对你来说更容易阅读,对我来说它大致相同。为我杀死它的部分是jQuery方法只能检查长度,除非你在插件中添加一个布尔参数和更多逻辑,而使用if语句你只需更改条件。
如果插件接受了条件,它将最终执行this.each
并检查每个元素的条件,但是您传入的条件必须是返回true
或{的函数{1}}给定元素。有点像现有的false
方法。
<强>更新强>
为了完整性,这里有一个小提琴,比较接受条件函数的插件和使用.filter
。 http://jsfiddle.net/fdYSx/2/
我认为它不再具有可读性或易于使用。
答案 3 :(得分:0)
注意事项:
if / else语句是:
if(condition)
{
//something
} else {
//something
}
然而,开关是:
switch(someVal) {
case 'valEqualsThis':
//do something
break;
}
if else的简短版本是单行语法:
if(someCondition)
//dosomething
else
//dosomethingelse
更短的版本是三元运算符
someoutput = (someCondition) ? doTrue : doFalse
Jquery还没有真正开始尝试进一步简化这些已经很短的检查条件的方法,但由于jquery可以像任何其他javascript一样扩展,如果你需要一个jquery本机函数,只需写一个$
命名空间