I'm basically trying to do exactly what the subject suggests, but I'm getting "undefined" in my alert, and I'm not entirely sure why. I am fairly new to jquery, so, I probably have the syntax wrong, but not sure where to go from here. I'll post both of my attempts, which both yield "undefined" in the alert...
//In my first attempt, I'm trying to get the id of the inner a tag
<ul>
<li id="l1" class="active"><a href="#c1">Samp 1</a></li>
<li id="l2" class=""><a href="#c2">Samp 2</a></li>
<li id="l3" class=""><a href="#c3">Samp 3</a></li>
</ul>
var selected = $(".active).children("a").attr("id");
alert(selected);
//In my second attempt, I'm trying to get the id of the currently selected li
var selected = $(".active").attr("id");
alert(selected);
The jQuery #id selector uses the id attribute of an HTML tag to find the specific element. An id should be unique within a page, so you should use the #id selector when you want to find a single, unique element.
The #id selector selects the element with the specific id. The id refers to the id attribute of an HTML element. Note: The id attribute must be unique within a document. Note: Do not start an id attribute with a number.
jQuery children() MethodThe children() method returns all direct children of the selected element. The DOM tree: This method only traverse a single level down the DOM tree. To traverse down multiple levels (to return grandchildren or other descendants), use the find() method.
$(".active").children("a").attr("id");
Your <a>
elements do not have an id
, only an href
. And using a selector instead of the children function may make your code easier to read.
Do you mean $(".active > a").attr("href")
?
$(".active").attr("id");
jQuery will return the id
attribute of the first element in the jQuery collection. Do you have another element with class active
?
I suggest you try $("ul > li.active").attr("id")
In the first attempt, you're getting the <a>
within the <li>
...which doesn't have an ID, you just need this:
var selected = $(".active").attr("id");
alert(selected);
So your second attempt is correct, you can see it in action here.
If you actually meant to get the id
from the <a>
element, then you need to give them IDs and your first attempt will work, you can see it 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