Skip to Content
JAVASCRIPT網頁應用程式設計
book

JAVASCRIPT網頁應用程式設計

by Alex MacCaw
January 2013
Intermediate to advanced
332 pages
5h 23m
Chinese
GoTop Information, Inc.
Content preview from JAVASCRIPT網頁應用程式設計
30
|
第二章
委派事件(Delegating Events
由於事件會以氣泡傳遞方式往更上層的元件傳播,因此可以試著採取另一種做法:只針
對上層元件設定事件監聽器,再檢查事件來自哪個子元件。像 SproutCore
http://www.
sproutcore.com
)框架平台,就是藉由採用這樣的做法,降低應用程式裡的事件監聽器
數量:
// ul 清單設定委派事件機制
list.addEventListener("click", function(e){
if (e.currentTarget.tagName == "li") {
/* ... */
return false;
}
}, false);
針對這種做法,jQuery 提供了一種絕佳的實作方式;只要呼叫
delegate()
函式,然後
再傳入三組引數即可:子選取項、事件類型、事件處理器。當然也可以直接幫每一組
li
元件分別設定相對應的
click
事件。不過採用
delegate()
函式的做法,可以降低事件監
聽器的數量,進而改善程式的效能:
// 請不要這麼做!這樣等於是幫每一組「li」元件設定監聽器(需耗費昂費的資源成本)
$("ul li").click(function(){ /* ... */ });
// 這麼做只需要設定一組事件監聽器
$("ul").delegate("li", "click", /* ... */);
採用委派事件機制的另一個好處,是可以讓所有動態被加進網頁元件的子元件,都還能共
用同一組事件監聽器。就拿前面那段程式碼範例來說 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

Ethan Brown, 武舎 広幸, 武舎 るみ
PHP编程:第4版

PHP编程:第4版

Kevin Tatroe, Peter MacIntyre
Strange Code

Strange Code

Ronald T. Kneusel
Perfecting Your Thinking Skills

Perfecting Your Thinking Skills

MIT Sloan Management Review

Publisher Resources

ISBN: 9789862766811