【问题标题】:jquery: get the object name?jquery:获取对象名称?
【发布时间】:2011-04-02 16:23:36
【问题描述】:

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

<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 名称,但有时我想获取类名作为对象名。

【问题讨论】:

  • 你能举一个&lt;a href="#" class="clickme"&gt; click &lt;/ a&gt;的期望结果的例子吗?

标签: jquery object click objectname


【解决方案1】:

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'
});

【讨论】:

  • 非常喜欢最后一个例子。易于阅读和稍后在其他条件语句中使用。
【解决方案2】:

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

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

如果您想要独特的东西,请使用id 属性并将class 替换为id

【讨论】:

    【解决方案3】:

    这不是回答确切的问题,而是回答我到达那里时遇到的问题 - 所以你也可能;-)

    简答:使用与“$(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";
    });
    

    【讨论】:

      【解决方案4】:

      姓名还是身份证?

       $('.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;
      });
      

      【讨论】:

      • 我不得不使用 e.target.id 来使用 Quincy 提到的事件对象
      【解决方案5】:

      使用事件对象的替代方法

      $('.clickme').click(function(e){
        alert($(e.target).attr('class'));
        return false;
      });
      

      【讨论】:

      • 谢谢。如果它是一个 id 而不是一个类会发生什么。我可以让它动态吗?请检查我上面的编辑以获取解释。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2022-01-07
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多