8

我试图通过下面的代码检索点击的对象名称,但我只得到 [object object],我怎样才能得到对象名称?

<a href="#" class="clickme">click</a>

    $('.clickme').click(function(){
      alert($(this));
      return false;
    });

我想'.clickme'作为我的对象名称。

谢谢。

编辑:

谢谢你们的帮助。抱歉,不清楚。

当我将此 jquery click() 转换为自定义函数或插件时,我想动态获取对象名称。

所以,

<a href="#" class="clickme">click</a>

        $('.clickme').click(function(){
          alert($(this));
          return false;
        });

我想'.clickme'作为我的对象名称。

和,

<a href="#" id="clickme">click</a>

        $('#clickme').click(function(){
          alert($(this));
          return false;
        });

我想'#clickme'作为我的对象名称。

所以你注意到有时我想获取 id 名称,但有时我想获取类名作为对象名。

4

5 回答 5

8

jQuery 确实有一个内部属性selector,可用于查找您要查找的内容:

$('.clickme').selector == '.clickme';
$('.clickme').find('a').selector == '.clickme a';

但是,您无法在 内访问它,click(function(e){})因为您必须重新选择使用this

$('.clickme').click(function(e){
  alert($(this).selector); // alerts nothing
});

但是,当您创建 click 函数时,您可以将该元素分配给一个变量并在其中引用它:

var $cm = $('.clickme').click(function(e){
  alert($cm.selector); // alerts '.clickme'
});
于 2011-04-02T16:39:07.247 回答
4

就是这样。不是对象名称,当然也没有什么独特之处。

您可以使用this.className或获取它$(this).attr('class')

如果您想要一些独特的东西,请使用该id属性并替换classid.

于 2011-04-02T16:25:47.653 回答
4

这并没有回答确切的问题,而是回答了我到达那里时得到的问题 - 所以你也可能;-)

简短的回答:使用与“$(this).attr('name')”相同的“ this.name

样本:

$("*").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";
});
于 2012-07-19T16:05:32.203 回答
1

使用事件对象的替代方法

$('.clickme').click(function(e){
  alert($(e.target).attr('class'));
  return false;
});
于 2011-04-02T17:10:23.890 回答
1

姓名还是身份证?

 $('.clickme').click(function(){
  alert( this.id );  // or $(this).attr('name') if you want the name
  return false;
});

它真正看起来是你想要这个类(不过,我不确定为什么,因为你已经使用了这个类作为选择器)。

 $('.clickme').click(function(){
  alert( $(this).attr('class') );
  return false;
});
于 2011-04-02T16:26:32.973 回答