Je fais actuellement cela pour vérifier si l'un des deux éléments existe:
if ($(".element1").length > 0 || $(".element2").length > 0) {
//do stuff...
}
Existe-t-il une meilleure façon de réécrire la même chose? Je veux dire, est .length
le même que .length > 0
?
if ($(".element1").is('*') || $(".element2").is('*')) {
// code
}
MODIFIER (par commentaire) Sélectionner des éléments par plusieurs classes en un seul appel:
if ($(".element1, .element2").is('*')) {
// code
}
Tous les éléments jQuery ont le .length
propriété. Vous pouvez simplement aller:
if ($('img').length) // Implies: If this element exists..
!$.isEmptyObject($.find('#urId'))
cela retournera "true" si l'élément existe et False sinon
à votre santé :)
Utilisez simplement .each ().
$(".element1").each(function(){
//Do Something here
}
Simple...
$.fn.exists = function(ifExists) {
return this.length ? ifExists.call(this, this) : this;
};
usage:
$('.element1, .element2').exists(function(els) {
// this and els refers to $('.element1, .element2')
});
Voir la version extrêmement mise à jour de ce plugin ici ! Utilise désormais la fonction de rappel pour que vous puissiez conserver la chaîne si vous le souhaitez. Peut remplacer complètement instruction if ou peut toujours être utilisé dans instruction if
Vous pouvez créer un plug-in jQuery très simple pour cela, en tant que tel:
(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);
[~ # ~] utilisez [~ # ~]
// 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();
Avec votre relevé If
if ($(".element1").exist() || $(".element2").exist()) {
...stuff...
}
Bien sûr, ce plugin pourrait être étendu pour être beaucoup plus sophistiqué (gérer plusieurs appels à la fois, créer des éléments inexistants basés sur une poussette), mais tel qu'il est actuellement, il remplit une fonction très simple et très nécessaire ... cet élément existe? retourner True
ou False