這是我正面臨的簡化問題。其他元素不聽CustomEvent
我有一個按鈕。點擊此按鈕後,它將發送自定義事件customClick
。所以我想要其他DOM
元素(如輸入)來偵聽此自定義事件。
但輸入不聽。只有調度事件纔會收聽customClick
的按鈕。
我做錯了什麼?我怎樣才能讓input元素聽customClick
事件?
var button = document.getElementById('customClick');
button.addEventListener('click', function(e){
var clickedButton = e.currentTarget;
var newEvent = new CustomEvent("customClick");
//console.log(newEvent);
clickedButton.dispatchEvent(newEvent);
})
button.addEventListener('customClick', function(e){
alert('button listening customClick');
})
var input = document.getElementById('input');
input.addEventListener('customClick', function(e){
alert('input listening customClick');
})
<button id="customClick">custom click</button>
<input id="input" type="text" />
你想輸入對事件作出反應上的按鈕啓動嗎?如果是這樣,您需要一個共同的父母來「捕捉」事件。請參閱冒泡vs捕獲:https://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-ampaged –
按鈕和輸入是相鄰的兄弟姐妹,你有很多選項可供你使用。他們並不都涉及傾聽自定義事件的輸入(女巫是矯枉過正的,順便說一句)。一旦customClick被觸發,輸入究竟會做什麼?無論您想要調用它,它仍然是一個點擊,除非這個customClick **不會**涉及用戶點擊一個元素......? – zer00ne