123 votes

jQuery - élément de filtre basé sur la clé / valeur .data ()

Dire que j'ai 4 éléments div avec la classe .navlink, ce qui, quand on clique dessus, utilisez .data() pour définir une clé appelée 'selected', pour une valeur de true:

$('.navlink')click(function() { $(this).data('selected', true); })

Chaque fois qu'un nouveau .navlink est cliqué, je voudrais stocker précédemment sélectionné, navlink pour plus tard manipulation. Est-il un moyen facile et rapide de sélectionner un élément basé sur ce qui a été stocké à l'aide de .data()?

Il ne semble pas y avoir de jQuery :filtres qui répondent à la loi, et j'ai essayé le suivant (dans le même événement click), mais pour quelque raison il ne fonctionne pas:

var $previous = $('.navlink').filter( 
    function() { $(this).data("selected") == true }
);

Je sais qu'il y a d'autres façons de le faire, mais pour l'instant je suis la plupart du temps juste curieux de savoir si il peut être fait par .data().

200voto

BaroqueBobcat Points 6788

votre filtre fonctionnerait, mais vous devez retourner la valeur true sur les objets correspondants dans la fonction passée au filtre pour qu’il puisse les attraper.

154voto

StefanoP Points 1331

Juste pour mémoire, vous pouvez filtrer les données avec jquery (cette question est assez vieux et jQuery évolué depuis puis, il est donc bon d’écrire cette solution ainsi) :

ou mieux (pour exécution) :

ou, si vous souhaitez obtenir tous les éléments avec `` défini :

13voto

Mark Points 49079

Nous pouvons faire une fonction assez facilement :

Utilisation (cochant une case d’option) :

8voto

Thomas Points 2295

Deux choses, j’ai remarqué (ils peuvent être des erreurs de lorsque vous l’avez écrit vers le bas bien).

  1. Vous avez manqué un point dans le premier exemple ( `` )
  2. Pour filtre fonctionne, vous devez retourner une valeur ( `` )

-2voto

Bryan Migliorisi Points 4057

On dirait plus de travail que ses preuves.

1) Pourquoi ne pas juste avoir une variable JavaScript qui stocke une référence à l’objet actuellement sélectionné element\jQuery.

2) Pourquoi ne pas ajouter une classe à l’élément actuellement sélectionné. Ensuite, vous pouvez interroger le DOM pour la classe « .la » ou quelque chose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X