Question

I don´t know if I have forgotten how to do so or if it´s a bug, but I just can´t find the caller's reference in the "click" event using jQuery.

I´m doing the following:


$(document).ready(function() {
    $('#parent a.item').click(doSomething);
});

function doSomething(e) {
    // Alerts for demostrational purposes only
    alert(e.target);
    alert(e.currentTarget);
    alert(this);
    alert($(this)[0]);
}

All the alerts show the hyperlink´s href attribute(page URL + '#').
Am I doing something wrong?

Notes: Using jQuery 1.4.2.

Was it helpful?

Solution

It's because you're alerting so you're seeing the string representation (since alert() takes a string)...which for an anchor is the href. You could do this for example:

alert(e.target); //or perhaps alert(this.target); - alerts the href
alert(e.target.innerHTML);  //or perhaps alert(this.innerHTML); - alerts the html

You can try it out/play with it here, note that this and e.target aren't always the same, if the click came from a child element, they'll be different.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top