免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
d3.js:數(shù)據(jù)可視化利器之 交互行為:響應(yīng)DOM事件

selection.on:事件監(jiān)聽操作符

on()操作符可以添加移除選擇集中每個(gè) DOM元素的事件監(jiān)聽函數(shù):

  1. selection.on(type[,listener[,capture]])

參數(shù)type是一個(gè)DOM事件類型字符串,指明要監(jiān)聽的事件,如: "click"、 "mouseover"、 "submit"等,可以使用瀏覽器支持的任何事件類型。

參數(shù)capture是可選的,對(duì)應(yīng)于W3C的useCapture標(biāo)志。

獲取/移除當(dāng)前監(jiān)聽函數(shù)

參數(shù)listener是可選的,如果未指定該參數(shù),則on()調(diào)用返回 type類型的當(dāng)前監(jiān)聽函數(shù)。

移除一個(gè)事件監(jiān)聽,將listener參數(shù)置為null即可。

為事件注冊(cè)監(jiān)聽函數(shù)

參數(shù)listener是一個(gè)監(jiān)聽函數(shù),當(dāng)d3捕捉到DOM事件后,將調(diào)用該監(jiān)聽函數(shù), 并忽略該函數(shù)的返回值。監(jiān)聽函數(shù)也是一個(gè)訪問器,d3觸發(fā)監(jiān)聽函數(shù)時(shí), 將this指向當(dāng)前的DOM對(duì)象,并以參數(shù)形式傳入其對(duì)應(yīng)的數(shù)據(jù)和在選擇集中的序號(hào)。

注冊(cè)多個(gè)監(jiān)聽函數(shù)

如果在同一個(gè)DOM對(duì)象上已經(jīng)注冊(cè)有type類型的監(jiān)聽函數(shù),那么再次調(diào)用on() 進(jìn)行注冊(cè)將移除之前注冊(cè)的監(jiān)聽函數(shù)。如果需要對(duì)一種事件注冊(cè)多個(gè)監(jiān)聽函數(shù),可以在 事件類型名稱后增加一個(gè)可選的命名空間,比如:"click.foo"、"click.bar"。

d3.event:DOM事件對(duì)象

你可能已經(jīng)注意到,d3的事件監(jiān)聽函數(shù)在觸發(fā)時(shí),傳入的參數(shù)中沒有DOM事件對(duì)象。 這樣設(shè)計(jì)的出發(fā)點(diǎn)是讓監(jiān)聽函數(shù)可以和其他訪問器函數(shù)一樣,能夠獲得DOM對(duì)象對(duì)應(yīng) 的數(shù)據(jù)和序號(hào)。

但是,在很多應(yīng)用場(chǎng)景下,我們還是需要DOM事件對(duì)象,比如:

  • 當(dāng)鼠標(biāo)點(diǎn)擊時(shí),我們需要它的xy坐標(biāo),或者判斷用戶點(diǎn)擊的是左鍵還是右鍵;
  • 或者,當(dāng)用戶敲擊鍵盤時(shí),我們需要
  • 或者,我們需要調(diào)用DOM事件對(duì)象的preventDefault()來禁止瀏覽器對(duì)某個(gè)事件的默認(rèn)行為;
  • 或者,我們需要調(diào)用stopPropagation()來阻止事件的冒泡行為......

d3使用一個(gè)全局變量來提供DOM事件對(duì)象:d3.event

d3.event在監(jiān)聽函數(shù)中有效。每當(dāng)事件觸發(fā)時(shí),d3就將DOM事件對(duì)象賦給d3.event, 并在監(jiān)聽器處理完之后將其清理。

d3.event就是你熟悉的Event對(duì)象,所以,隨便用。

d3.mouse:獲得鼠標(biāo)事件位置

盡管可以使用DOM事件對(duì)象的pageX和pageY獲得鼠標(biāo)位置,d3提供了更好用的方法:

  1. d3.mouse(container)

參數(shù)container表示一個(gè)HTML元素,d3.mouse()將返回鼠標(biāo)位置相對(duì)于 這個(gè)容器元素的x、y坐標(biāo)。

這意味著對(duì)同一個(gè)鼠標(biāo)事件,我們只要傳入不同的容器元素,就可以獲得鼠標(biāo)位置 不同的相對(duì)位置!

解脫了很多令人煩躁的計(jì)算過程,對(duì)吧?

參考資料:http://www.hubwiz.com/course/54fd40cfe564e50d50dcf284/

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Three.js教程:鼠標(biāo)操作三維場(chǎng)景
jQuery基礎(chǔ)教程筆記 44(上)
JavaScript 中的有限狀態(tài)機(jī),第 2 部分: 實(shí)現(xiàn)組件
JavaScript基礎(chǔ)知識(shí)點(diǎn)總結(jié)
jQuery 事件簡(jiǎn)介
jquery-創(chuàng)建元素和添加子元素
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服