Est-il possible de vérifier si un élément a jquery select2 déjà appliqué?
Je veux appliquer select2 à tout un tas d'éléments jquery sur la page qui ont tous le même nom de classe, mais il semble comme si je l'appelle select2() sur un élément qui a déjà eu une select2() appelée sur elle, puis il explose. voici mon code
$('.MyDropdowns').each(function (i, obj) {
$(obj).select2({ width: "455px" });
});
donc je veux quelque chose comme:
$('.MyDripdowns').each(function (i, obj) {
if (!$(obj).HasSelect2Initiatized)
{
$(obj).select2({ width: "455px" });
}
});
N'est rien de tout cela existe?
- Eh bien on dirait qu'il se cache l'élément appelé, de sorte que vous pouvez essayer
if($(obj).is(":visible"))
- cela ne semble pas très infaillibles comme si l'élément est caché pour d'autres raisons?
- Pourquoi vous appelez
select2()
deux fois? - Oui, gratter que l'idée n'a jamais utilisé ce plugin avant, la honte de leur plugin ne pas faire ce que les autres plugins font et utiliser une option "instance". sMr de réponse ci-dessous ressemble à la voie à suivre
Vous devez vous connecter pour publier un commentaire.
vous pouvez vérifier si l'élément a
select2
attributMODIFIER
Comme @Fr0zenFyr dit dans son commentaire pour v4.0 vous pouvez utiliser :
if (!$(obj).hasClass("select2-hidden-accessible"))
if (!$(obj).hasClass(select2-hidden-accessible))
test devrait fonctionner. Je ne pense pas que cela fonctionne avecdata
attribut plus.Solution de travail:
Liens:
La réponse ci-dessus est presque correct.
Mais il crée des problème lorsque nous ajoutons des éléments de façon dynamique sur la même page et l'application, sélectionnez 2 nouvellement créés élément.
À qui fois sélecteur doit être spécifié à l'aide non seulement en classe, mais aussi avec le type d'entrée. PFB code de référence.
Vous pouvez vérifier si Select2 les opérations et d'erreur ou pas avec
try..catch
. Si une erreur est levée, ce qui signifie qu'il n'est pas Select2 dans l'élément.L'inconvénient est que cela va encore sortie une erreur dans le navigateur de la console.