I have this html:
<input id="testme" test="something"/><label test="something2"></label>
and this js
$("[test]").each(alert($(this).attr("test")));
demoed here:
jsfidde
I would think the alert would give me "something"
and then "something2"
. But it does nothing!
What is going on?
each(), which is used to iterate, exclusively, over a jQuery object. The $. each() function can be used to iterate over any collection, whether it is an object or an array. In the case of an array, the callback is passed an array index and a corresponding array value each time.
each() function, jQuery's foreach equivalent. jQuery's foreach equivalent can be very useful for many situations. These examples will get you started and teach you how you can loop through arrays, objects and all kinds of HTML elements.
each() jQuery's each() function is used to loop through each element of the target jQuery object — an object that contains one or more DOM elements, and exposes all jQuery functions. It's very useful for multi-element DOM manipulation, as well as iterating over arbitrary arrays and object properties.
. each() is used directly on a jQuery collection. It iterates over each matched element in the collection and performs a callback on that object. The index of the current element within the collection is passed as an argument to the callback.
You are alerting the wrong thing. The each
simply returns the collection/jQuery. You would need to alert inside the each callback to alert the values of the custom attribute. Also. Please use the data-
prefix when assigning [custom attributes][1] for better standards compliance.
$(".classname").each(function(){
alert($(this).attr("classname"));
});
.each()
takes a function, it should look like this instead:
$("[test]").each(function() {
alert($(this).attr("test"));
});
You can test it out here.
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