jQueryコードの途中でif/elseステートメントを書くのは正しくないと感じます:
if ($("#test").length) {
// do smth
}
else {
// do smth else
}
次のようなものはありますか?
$("#test").test(function(){
// do smth
},
function(){
// do smth else
});
jQueryコードの途中でif/elseステートメントを書くのは正しくないと感じます:
if ($("#test").length) {
// do smth
}
else {
// do smth else
}
次のようなものはありますか?
$("#test").test(function(){
// do smth
},
function(){
// do smth else
});
次のようなものはありますか:
あります、今!
(function($) {
$.fn.test = function(a, b) {
(this.length ? a : b).apply(this);
return this;
};
})(jQuery);
私が知る限り...しかし、短い条件には三項演算子を使用できます
例:
var foo = $("#test").length ? "bar" : "baz";
編集:関数を使用する場合
$("#test").length ? (function() { console.log("#test available"); })() : (function() { console.log("#test not available"); })();
要素が選択されていない場合、呼び出されたメソッドは何もしないため、使用した例はまったく必要ありません。
フィルター メソッドや each メソッドなどの内部以外の jQuery チェーンの途中に if ステートメントを配置することが理にかなっている状況は考えられません。
アップデート
私はこれを使いやすさの観点から見ています。次の 2 つの状況を比較してください。
if ( $(".div").length ) {
console.log("We found divs");
} else {
console.log("We did not find div");
}
対
$(".div").test(function(){
console.log("We found divs");
},function(){
console.log("We did not find divs");
});
jQuery メソッドの方が読みやすいかもしれませんが、私にとってはほぼ同じです。私にとってそれを殺す部分は、ブール値パラメーターとプラグイン内のロジックを追加しない限り、jQuery メソッドは長さしかチェックできないという事実ですが、if ステートメントでは条件を変更するだけです。
プラグインが条件を受け入れた場合、各要素の条件を実行してチェックすることになりますが、渡す条件は、または指定された要素this.each
を返す関数である必要があります。既存の方法のようなものです。true
false
.filter
アップデート
完全を期すために、条件関数を受け入れるプラグインと using を比較するフィドルを次に示します$.fn.each
。http://jsfiddle.net/fdYSx/2/
これ以上読みやすく、使いやすいとは思いません。
注意事項:
if/else ステートメントは次のとおりです。
if(condition)
{
//something
} else {
//something
}
一方、スイッチは次のとおりです。
switch(someVal) {
case 'valEqualsThis':
//do something
break;
}
if else の短いバージョンは、1 行の構文です。
if(someCondition)
//dosomething
else
//dosomethingelse
それのさらに短いバージョンは三項演算子です
someoutput = (someCondition) ? doTrue : doFalse
Jquery は、条件をチェックするこれらの既に短い方法をさらに簡素化しようとするビジネスに (まだ) 取り込まれていませんが、jquery は他の JavaScript と同様に拡張可能であるため、jquery ネイティブ関数が必要な場合は、$
名前空間に 1 つ書き込むだけです。