イベントを持つjavascript cloneNode
-
03-07-2019 - |
質問
Gmail用のグリースモンキースクリプトに取り組んでおり、「受信トレイ」のコピーを作成する必要があります。リンク。 cloneNodeを使用しても問題ありませんが、実行時に接続されるonclickイベントがあると思います。したがって、これは2つの部分からなる質問です。 1.ノードに接続されているイベントを確認する方法はありますか? 2.これらのイベントもコピーする方法はありますか? 私が見つけた最も近いものはjQueryであり、私はまだそこに行く準備ができていません。 ありがとう!
解決
- 要素の
onclick
属性を使用して設定しない限り、 - 確実ではありません(
onclick
属性をコピーできますが、それが機能し続けるかどうかは、それが使用されたかどうか、そして何をするかによって異なります)。
独自の click
ハンドラーを追加してから、元のイベントをトリガーすることをお勧めします...または、他の方法で動作をシミュレートします。
他のヒント
この理論を使用してこのような問題を解決できると思います:
JSには、liveListsとも呼ばれるNodeListがあります。長さが変わるたびに確認し、希望する共通イベントを(length-1)のリストの新しい要素に追加します。
言うこと...
これは、イベントを追加するためにNodelistを使用する例です。
<body>
<div id="one" class="clones" style="background:red;width:100px;height:100px"></div>
</body>
<script>
//Selecor based live list [Advantage]
var nodeList = document.getElementsByClassName('clones')
//Common Function for nodelist
nodeList.addEvents = function(){
nodeList.item(nodeList.length-1).addEventListener('click',function(){
console.log(this.id);
});
}
nodeList.addEvents();
//Making Clone
var _clone = document.getElementsByTagName('div')[0].cloneNode(true);
//Changing Id
_clone.id="two"
document.body.appendChild(_clone);
nodeList.addEvents();
</script>
所属していません StackOverflow