私は現在、次の2つの要素のいずれかが存在するかどうかを確認するためにこれを行っています。
if ($(".element1").length > 0 || $(".element2").length > 0) {
//do stuff...
}
同じものを書き直すより良い方法はありますか?つまり、.lengthと同じ.length > 0ですか?
if ($(".element1").is('*') || $(".element2").is('*')) {
// code
}
編集(コメントごと)1回の呼び出しで複数のクラスによって要素を選択します。
if ($(".element1, .element2").is('*')) {
// code
}
すべての jQuery 要素には.lengthプロパティがあります。あなたはただ行くことができます:
if ($('img').length) // Implies: If this element exists..
!$.isEmptyObject($.find('#urId'))
要素が存在する場合は「true」を返し、存在しない場合は False を返します。
乾杯 :)
.each() を使用するだけです。
$(".element1").each(function(){
//Do Something here
}
単純...
このプラグインの非常に更新されたバージョンをここで参照してください! コールバック関数を使用するようになったため、必要に応じて連鎖性を維持できます。if ステートメントを完全に置き換えるか、ifステートメント内で引き続き使用できます
このための非常に単純な jQuery プラグインを作成できます。
(function($) {
if (!$.exist) {
$.extend({
exist: function(elm) {
if (typeof elm == null) return false;
if (typeof elm != "object") elm = $(elm);
return elm.length ? true : false;
}
});
$.fn.extend({
exist: function() {
return $.exist($(this));
}
});
}
})(jQuery);
使用する
// With ID
$.exist("#eleID");
// OR
$("#eleID").exist();
// With class name
$.exist(".class-name");
// OR
$(".class-name").exist();
// With just tag // prolly not best idea aS there will be other tags on site
$.exist("div");
// OR
$("div").exist();
あなたのIfステートメントで
if ($(".element1").exist() || $(".element2").exist()) {
...stuff...
}
もちろん、このプラグインはさらに拡張して、より洗練されたものにすることができます (一度に複数の呼び出しを処理し、乳母車に基づいて存在しない要素を作成します)。この要素は存在しますか?戻るTrueかFalse
$.fn.exists = function(ifExists) {
return this.length ? ifExists.call(this, this) : this;
};
利用方法:
$('.element1, .element2').exists(function(els) {
// this and els refers to $('.element1, .element2')
});