代码之家  ›  专栏  ›  技术社区  ›  Chris Sobolewski

使用onmousedown获取刚才鼠标所属元素的ID?

  •  7
  • Chris Sobolewski  · 技术社区  · 15 年前

    这可能吗?

    我正在尝试为onmousedown编写一个函数,该函数将返回您刚才单击的元素的ID,以便稍后在另一个div中重新创建该元素时使用。

    4 回复  |  直到 15 年前
        1
  •  16
  •   Christian C. Salvadó    15 年前

    你可以用 event delegation ,基本上只将一个事件处理程序连接到整个文档,并使用 event.target

    document.body.onmousedown = function (e) {
      e = e || window.event;
      var elementId = (e.target || e.srcElement).id;
    
      // call your re-create function
      recreate(elementId);
      // ...
    }
    
    function recreate (id) {
      // you can do the DOM manipulation here.
    }
    

    编辑: 您可以通过以下方式将事件分配给所有Scriptaculous DragTables:

    Event.observe(window, 'load', function () {
      Draggables.drags.each(function (item) {
        Event.observe(item.element, 'mousedown', function () {
          alert('mouseDown ' + this.id); // the this variable is the element 
        });                              // which has been "mouse downed"
      });
    });
    

    here

        2
  •  2
  •   Alex    15 年前

    CMS几乎有正确的答案,但您需要使其更易于跨浏览器使用。

    document.body.onmousedown = function (e) {
      // Get IE event object
      e = e || window.event;
      // Get target in W3C browsers & IE
      var elementId = e.target ? e.target.id : e.srcElement.id;
      // ...
    }
    
        3
  •  0
  •   美丽美丽花    7 年前

    请将此代码插入您的javascript。

    document.getElementById("article").onmouseup(handMu);
    
        4
  •  -1
  •   ninu    15 年前

    如果要复制div id,一种简单的方法可能是如下所示的cloneNode:

    <div id="node1">
      <span>ChildNode</span>
      <span>ChildNode</span>
    </div>
    
    <div id="container"></div>
    
    <script type="text/javascript">
      var node1 = document.getElementById('node1');
      var node2 = node1.cloneNode(true);
    
      node2.setAttribute('id', 'node2');
    
      var container = document.getElementById('container');
      container.appendChild(node2);
    </script>
    
    推荐文章