("Event reference",function(e){},options)
1.目標
: 選擇想要觸發的標籤或是css選擇器。
2.Event reference
3. function(e){}
4. options
("Event reference",function(e){},options)
1.目標
2.Event reference
:為觸發的事件類型,又分為標準事件跟非標準事件,標準事件是由官方的 Web 標準規範中所定義,且應適用於所有的瀏覽器。
3. function(e){}
4. options
("Event reference",function(e){},options)
1.目標
2.Event reference
3. function(e){}
:觸發後的動作。參數e
:為捕捉滑鼠觸發當下的資訊(物件型態
)如下圖,如果想要獲得相關資訊(屬性
),以e.屬性
即可。
4. options
("Event reference",function(e){},options)
1.目標
2.Event reference
3. function(e){}
4. options
:選擇性輸入,參數有以下三種
capture
-Boolean 型別,送出true的話就是瀏覽器會使用Capture方式,false的話是Bubbling,只有在特定狀況下才會有影響,通常建議是false。false
,那就會使用bubbling,他是從內而外的流程,所以會先執行藍色元素的click事件再執行紅色元素的click事件。true
,那就是capture,和bubbling相反是由外而內,會先執行紅色元素的click事件才執行藍色元素的click事件。once
-Boolean 型別,用途就像是 jQuery 的one一樣。passive
-Boolean 型別,用途是告訴瀏覽器,這個事件 handler function 會不會呼叫event.preventDefault
來停止瀏覽器的原生行為。let el = document.querySelector("a");
let passive = {
passive: true //true會使瀏覽器出現報錯訊息,再執行後面的動作
};
el.addEventListener("click", function (e) {
e.preventDefault();
console.log('連結成功失效');
}, passive);
//透過document.querySelector選定目標(css選擇器或是標籤都可以)
let el = document.querySelector(".button");
let input = document.querySelector(".span");
el.addEventListener("click", function (e) {
input.textContent = '已點擊';
});
可以利用chorme的開發者工具來看是有否綁定。
e.target
:用來獲取觸發當下的資料,也就是function (e)
的參數e
的資料。let el = document.querySelector(".button");
let input = document.querySelector(".span");
el.addEventListener("click", function (e) {
console.log(e.target);
});
let el = document.querySelector(".button");
let list = document.querySelector(".list");
console.log(list);
list.addEventListener("click", function (e) {
console.log(e.target);
});
在例子2中,因為可以偵測點擊的範圍變大
當點擊第1點
的空白處時會出現下圖:
當點擊第2點
的空白處時會出現下圖:
e.target.nodeName
來進行進一步取的事件觸發當下的DOM位置:從chrome可以觀察到下列資訊
let list = document.querySelector(".list");
list.addEventListener("click", function (e) {
console.log(e.target.nodeName); //呈現滑鼠點擊事件的DOM節點(值)
if (e.target.nodeName == "LI") {
alert("沒點到按鈕唷");
}
if (e.target.nodeName == "INPUT") {
alert("恭喜,點到按鈕了");
}
});
參考文章: