私は動的に作成する各ボックスにイベントハンドラを割り当てる方法を見つけようとしています。現時点では、ユーザーは「上に追加」または「下に追加」をクリックすることができ、クリックした場所に2行のボックスが表示されます。複数の要素にイベントハンドラを割り当てる方法(colorPicker)
ユーザーが特定の四角形をクリックすると、colorPickerがポップアップし、その特定の四角形の色を変更できるようにしようとしています。
しかし、私のプログラムはちょっとバグがあります。ユーザーがクリックした最初の四角形でのみ機能し、colorPickerは再びポップアップしません。
これを修正する方法や、より良い選択肢があれば誰でも知っていますか?
マイコード:私はあなたのCodePenに気づい
http://codepen.io/anon/pen/bwBRmw
var theParent = document.querySelector(".container");
theParent.addEventListener("click", doSomething, false)
//var picker = new Picker()
function doSomething(e) {
console.log("gets inside doSomething")
console.log(e.target)
console.log(e.currentTarget)
if (e.target !== e.currentTarget) {
var clickedItem = e.target.id;
console.log("Hello " + clickedItem);
var k = document.getElementById(clickedItem)
var picker = new Picker(k)
picker.show();
}
picker.on_done = function(colour) {
$(k).css('background-color',colour.rgba().toString());
picker.hide()
}
//e.stopPropagation();
}
あなたはクリックハンドラをバインドするために使用されるコードを投稿することができます:ページ上の唯一のピッカーがあるので、あなたは、ピッカーの「親」要素をリセットする必要がありますか? –
@GregBurghardtそれはあなたと大丈夫ならば私はそれへのリンクがあります: http://iamsaravieira.com/picker.js – blazerix
'doSomething'関数は、それがイベントハンドラとして呼び出されているように見えます。 'doSomething'を呼び出すコードを投稿したり、この関数をクリックハンドラとしてバインドできますか? –