I have a div like this:
<div id="popupDiv1" class="popupDivClass">
<a id="popupDivClose" class="popupCloseClass">x</a>
</div>
When I click on the 'x' (I want to run a jquery function called disablePopup(id);
where id is the id of the coresponding popupDiv (I have many popupDiv each with it's own X button.
in order to do so I implemented the following
$(".popupCloseClass").click(function (event) {
var buttonID = $(event.target).attr("id");
var id = $( buttonID).closest("div").attr("id");
disablePopup(id);
});
basicaly I get the id of the popupCloseClass clicked then I get the id of it's parent (the corresponding popupDiv) via the closest method. then I call disablePopup.
But this is not working.
I even tryed to use the var buttonID = $(buttonID).parent().attr("id");
method but did not work either.
I also tried var id = this.id;
Any help is greatly appreciated
Thanks
This works fine:
JSFiddle Demo
You should just use
this
instead of the way you are getting the ID and then trying to use it as a selector (you were missing the#
before the ID):This must work:
You should do
(you could also use
$(this).parent().attr("id");
) but using closest is safer in case you change your html structureinstead of using
closest
you can useparent
like this...Notice you can use the
this
keyword to reference the element that kicked off the event. As you have it, you are using the value ofbuttonID
as the element selector which would have a value of"popupDivClose"
and without adding a#
at the start it will not search for an ID, but rather a tag element called "popupDivClose".If you wanted to keep using buttonID you could have used this line of code to get it working...
However, I would have preferred to write the whole event like so...
notice the use of
event.preventDefault();
this will ensure that the browser will not process the natural action for a link click (i.e. page navigation) - though, in Chrome at least, you need to specify a href value for the navigation anywayHere is a working example