2009-08-09 7 views

答えて

10

あなたは基本的にあなたの文書全体に一つだけのイベントハンドラを接続し、イベントが最初にevent.targetを使用して、派遣された要素を取得するには、event delegationを使用することができます。

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を確認してください。

+0

完璧、ありがとう。 –

+0

あなたは大歓迎です! – CMS

+1

このようなイベントを扱うDOMの方が高ければ高いほど、ハンドラの中で何をするかについて注意する必要があります。 –

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ドラッグ/ドロップ機能のコードに触れようとしていますが、これで元のものが削除され、同じクラスとIDを持つ必要があるdivppに新しいものが書き込まれます。 私は嘘をつくつもりはないが、私はまだjavascriptでギタリストではない、私はここで私のインスピレーションを見つけた:http://ashishware.com/MochikitDnD.shtml しかし、彼はMath.randomのIDを割り当てている()、私は同じIDを保持する必要があるので、私はこれにパッチを当てようとしているだけでなく、それが未知数のdraggablesで動作するようにしようとしています。私は、しかし、私は2番目の部分がダウンしていると信じています。 –

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はグローバル変数に渡すことができるmy要素の値を持ちます。そして/またはパラメータとしてeを渡すために新しい関数を呼び出します。 –

+0

はいクリス。実際のオブジェクトやIDを渡すことができます。 – Alex

0

Plsこのコードをあなたのjavascriptに挿入してください。

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