【问题标题】:Getting the ID of an object when the object is given给定对象时获取对象的ID
【发布时间】:2010-03-29 16:16:42
【问题描述】:

我有点击时调用函数的链接:

<a href="javascript:spawnMenu(this);" id="link1">Test1</a>

为了使我的函数工作,我需要访问该对象,以便我可以执行这样的 jQuery 操作:

alert($(objCaller).offset().left);

由于objCaller 指向对象而不是对象ID,因此这不起作用。我需要这样的东西:

alert($("a#link1").offset().left);

如何从objCaller 获取对象 ID?

【问题讨论】:

    标签: javascript html object


    【解决方案1】:

    你需要这样做:

    <a href="javascript:;" onclick="spawnMenu(this);" id="link1">Test1</a>
    

    您不能通过 javascript: url 传递 this

    【讨论】:

      【解决方案2】:

      这不行吗?

      objCaller.id
      

      【讨论】:

      • &lt;a href="javascript:alert(this.id);" id="link1"&gt;Test1&lt;/a&gt; 返回undefined
      • 哦,是的,那是因为您不能在 href 中传递 this。而是通过onclick 事件传递它。
      【解决方案3】:

      突然想到:alert($(this).offset().left); 不起作用吗?否则,您可以通过$(this).attr("id")获取ID。

      【讨论】:

      • 见下面 Rob 的回答。我什至没有看问题的那一部分。
      【解决方案4】:

      从您的问题中不清楚 objCaller 指的是什么。如果它引用元素本身,那么 $(objCaller) 可以在 jQuery 中正常工作。

      使用 firebug(firefox 的扩展)尝试您的代码。您可以将“alert”替换为“console.log”,这样您就有:

      console.log(objCaller);
      

      这将帮助您准确计算 objCaller 中存储的内容(如我所说,如果 $(objCaller) 不起作用,则它不是一个元素)。

      如果 objCaller 是一个元素,那么 objCaller.id 将是检索 id 的方式。

      【讨论】:

        【解决方案5】:

        您可以通过以下方式获取 ID:

        function spawnMenu (elem) {
            var id = elem.id; // elem is just a DOM node, so access it's id
        
            // your code here...
        }
        

        然而,jQuery 也应该能够包装一个 DOM 节点,所以以下应该也可以工作:

        function spawnMenu (elem) {
            elem = $(elem).get(0);
        
            // your code here...
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-29
          • 1970-01-01
          • 2018-05-01
          • 1970-01-01
          相关资源
          最近更新 更多