Comment obtenir un tableau de valeur d’atsortingbut à partir d’éléments d’un object jQuery

J’utilise un atsortingbut personnalisé dans les éléments de ma propre classe. J’essaie de renvoyer la valeur d’atsortingbut personnalisé pour tous les éléments de la classe.

J’ai utilisé jQuery pour rechercher les éléments par classe et jQuery a placé l’object dans un tableau.

var tabs = $('li.tab_item'); 

Maintenant que j’aurais les objects dans un tableau, je voudrais renvoyer la valeur de l’atsortingbut personnalisé pour tous les membres du tableau.

Comment cela peut-il être fait?

 var tab_atsortingbs = $('li.tab_item').map(function () { return $(this).attr("custom_atsortingbute"); }); 

Cela vous donnera un tableau des valeurs d’atsortingbuts personnalisés. Bien sûr, vous pouvez le faire de manière plus traditionnelle:

 var tab_atsortingbs = []; $('li.tab_item').each(function () { tab_atsortingbs.push( $(this).attr("custom_atsortingbute") ); }); 

Quoi qu’il en soit, vous devriez probablement utiliser les atsortingbuts data-* fournis par HTML5:

 
  • et (voir data() jQuery data() ):

     $('li.tab_item').data("foo"); // -> "some custom data" 

    Utilisez .map() :

      $("li.tab_item").map(function (){ return this.getAtsortingbute("myAtsortingbute"); }); 

    Cela vous donne un tableau de valeurs enveloppées dans un object jQuery. Si vous voulez obtenir le tableau, appelez .get() , c’est-à-dire .map(...).get() .

    Au fait, vous pouvez aussi sélectionner les éléments par atsortingbut au lieu de classe:

     $("[myAtsortingbute]") 

    Cela renverra tous les éléments de la page ayant un atsortingbut myAtsortingbute .

    Solution simple (ES6)

     Array.from(document.getElementsByClassName('tab_item')).map(item => item.getAtsortingbute('foo')); 

    Démo en ligne (jsFiddle)