I am trying to retrieve the clicked object name through the code below, but I get [object object] only, how can I get the object name?
<a href="#" class="clickme">click</a>
$('.clickme').click(function(){
alert($(this));
return false;
});
I would like to get '.clickme'
as my object name.
Thanks.
EDIT:
thanks for the help guys. sorry that for not being clear.
I want to get the object name dynamically when I turn this jquery click() into a customised function or a plugin.
so,
<a href="#" class="clickme">click</a>
$('.clickme').click(function(){
alert($(this));
return false;
});
I would like to get '.clickme'
as my object name.
and,
<a href="#" id="clickme">click</a>
$('#clickme').click(function(){
alert($(this));
return false;
});
I would like to get '#clickme'
as my object name.
so you notice sometime I want to get id name but sometime I want to get the class name as the object name.
jQuery does have an internal property selector
that can be used to find what you're looking for:
$('.clickme').selector == '.clickme';
$('.clickme').find('a').selector == '.clickme a';
However you can't access this within the click(function(e){})
since you have to reselect using this
:
$('.clickme').click(function(e){
alert($(this).selector); // alerts nothing
});
However, when you create the click function you can assign that element to a variable and reference it within:
var $cm = $('.clickme').click(function(e){
alert($cm.selector); // alerts '.clickme'
});
That's the class. Not the object name and certainly nothing unique.
You can get it using this.className
or $(this).attr('class')
.
If you want something unique, use the id
attribute and replace class
with id
.
This doesn't responds to the exact question but to the one I got when I get there - So you too maybe ;-)
Short answer: use "this.name" which is the same than "$(this).attr('name')"
Sample:
$("*").click(function (event) {
event.stopPropagation();
// Display the name of the clicked object
$(this).after("<span> " + this.name +" clicked! </span>");
// Change the name for what you want (optional - just to show it's doable)
this.name = this.name + "X";
});
Name or id?
$('.clickme').click(function(){
alert( this.id ); // or $(this).attr('name') if you want the name
return false;
});
What it really looks like is that you want the class (though, I'm not sure why since you've used the class as the selector).
$('.clickme').click(function(){
alert( $(this).attr('class') );
return false;
});
an alternative using the event object
$('.clickme').click(function(e){
alert($(e.target).attr('class'));
return false;
});
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