Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery how to find an element based on a data-attribute value?

I've got the following scenario:

var el = 'li'; 

and there are 5 <li>'s on the page each with a data-slide=number attribute (number being 1,2,3,4,5 respectively).

I now need to find the currently active slide number which is mapped to var current = $('ul').data(current); and is updated on each slide change.

So far my tries have been unsuccessful, trying to construct the selector that would match the current slide:

$('ul').find(el+[data-slide=+current+]); 

does not match/return anything…

The reason I can't hardcode the li part is that this is a user accessible variable that can be changed to a different element if required, so it may not always be an li.

Any ideas on what I'm missing?

like image 747
Jannis Avatar asked Nov 16 '10 05:11

Jannis


2 Answers

You have to inject the value of current into an Attribute Equals selector:

$("ul").find(`[data-slide='${current}']`) 

For older JavaScript environments (ES5 and earlier):

$("ul").find("[data-slide='" + current + "']");  
like image 187
Frédéric Hamidi Avatar answered Oct 15 '22 06:10

Frédéric Hamidi


in case you don't want to type all that, here's a shorter way to query by data attribute:

$("ul[data-slide='" + current +"']"); 

FYI: http://james.padolsey.com/javascript/a-better-data-selector-for-jquery/

like image 33
KevinDeus Avatar answered Oct 15 '22 06:10

KevinDeus