Select elements that i have previously set with jquery.data();
i.e. Select all elements with .data('myAttr')
already been set.
SOLUTION
A jsfiddle to demostrate is Fiddle
Use the querySelector method to get an element by data attribute, e.g. document. querySelector('[data-id="box1"]') . The querySelector method returns the first element that matches the provided selector or null if no element matches the selector in the document.
You can use the attribute selector: $('[data-my-key]').
The jQuery. hasData() method provides a way to determine if an element currently has any values that were set using jQuery. data() . If there is no data object associated with an element, the method returns false ; otherwise it returns true .
You could do
$('[data-myAttr!=""]');
this selects all elements which have an attribute data-myAttr
which is not equal to '' (so it must have been set); (only for elements that have their data attribute set in HTML not via jQuery)
you could also use filter() (which works for data attributes set from jQuery)
$('*').filter(function() { return $(this).data('myAttr') !== undefined; });
The best and simple way to select them is:
$('[data-myAttr]')
More Information:
I tested a lot of things.
Using $('[data-myAttr!=""]')
doesn't work for all cases. Because elements that do not have a data-myAttr
set, will have their data-myAttr
equal to undefined
and $('[data-myAttr!=""]')
will select those as well, which is incorrect.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With