使用onmousedown获取您刚才所拥有的元素的ID?

时间:2009-08-09 03:57:24

标签: javascript onmousedown

这可能吗?

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

4 个答案:

答案 0 :(得分:13)

您可以使用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 draggables分配事件:

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

答案 1 :(得分:2)

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;
  // ...
}

答案 2 :(得分:0)

如果你想复制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>

答案 3 :(得分:0)

请将此代码插入您的javascript。

document.getElementById("article").onmouseup(handMu);