2009-08-09 121 views

回答

10

您可以使用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的拖拽元素以这样的方式

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

+0

完美,谢谢。 – 2009-08-09 04:23:41

+0

不客气! – CMS 2009-08-09 04:24:19

+1

值得注意的是,在你处理这样的事件时,你需要更加注意你在处理器内部做了什么,因为它可能被解雇*很多*。 – 2009-08-09 04:25:38

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> 
+0

原来也需要删除。 我正在尝试对Scriptaculous拖放功能的某些代码进行删除原来的操作,然后在droppable div中写入一个新的代码,该代码必须具有相同的类和ID。 我不会说谎,我不是一个很好的JavaScript,我发现我的灵感来自这里:http://ashishware.com/MochikitDnD.shtml 但是他分配了一个id的Math.random (),而我需要保留相同的ID,所以我正在尝试修补此问题,并使其能够处理未知数量的可拖动项。不过,我相信我有第二部分。 – 2009-08-09 04:11:02

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

为了确保这一点很清楚,e会得到我的元素的值,然后我可以传递给一个全局变量,和/或调用一个新的函数作为参数传入e,是的? – 2009-08-09 04:15:39

+0

是的克里斯。您可以传递实际的对象或ID,如CMS在他的示例中所做的那样。 – Alex 2009-08-09 10:19:24

0

请将此代码插入到您的JavaScript。

document.getElementById("article").onmouseup(handMu); 
相关问题