我創造了很多DOM元素(每個人都有相同的HTML結構)與<template>
標籤克隆的元素:添加事件偵聽器模板標籤
<template id="weapon-template">
<div class="button">
<div class="button-price" data-price ></div>
<img class="button-image" data-image >
<div class="button-name" data-name ></div>
<div class="button-damage" data-damage></div>
<div class="button-amount" data-amount></div>
</div>
</template>
...和JavaScript的幾行:
var clone;
var template = document.getElementById("weapon-template");
template.content.querySelector("[data-image]" ).src = data.prev;
template.content.querySelector("[data-price]" ).innerHTML = data.cost + "$";
template.content.querySelector("[data-name]" ).innerHTML = data.name;
template.content.querySelector("[data-damage]").innerHTML = data.damage;
template.content.querySelector("[data-amount]").innerHTML = 0;
clone = document.importNode(template.content, true)
this.container.appendChild(clone);
我很想在克隆的元素上添加一些事件監聽器。我無法找到互聯網和疲憊幾件事情我自己沒事人一樣:
template.content.querySelector("[data-price]").addEventListener("click", action, false);
clone.querySelector("[data-price]").addEventListener("click", action, false);
......這些都不奏效。我可以簡單地這樣做:
var child = this.container.childNodes[ 0 ];
var target = child.querySelector("[data-price]");
target.addEventListener("click", action, false);
...但我不知道是否有另一個類似的那些還沒有爲我工作更簡單的方法。
你爲什麼選擇'data- *'屬性? – 2015-06-21 19:18:36
@Jamen只是因爲我不想要任何id重複。 – guest459473
@Jamen類名可以在任何時候改變,例如當我設計一些新的按鈕和不同的HTML結構等等。在這種情況下,'data- *'屬性就像id一樣,所以我可以將JS功能來自CSS設計。 – guest459473