簡體   English   中英

將所有可用事件綁定到元素

[英]Bind all available events to an element

我可以將all the available events綁定到an element

$('body').on('all available events', '.element', function(e) {
  if (e.type == 'click') {
    // do something...
  } 
  else if (e.type == 'change') {  
    // do something else...
  }
});  

我不想給他們像

$('body').on("change click", '.element', function(e) {...});

我不建議您這樣做,但是如果您想:

$('body').on('blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu', function(e) {
    // Your code here
});

參考: https : //github.com/jquery/jquery/blob/master/src/event/alias.js#L6

似乎是個壞主意,但是您可以通過在元素上運行Object.keys並過濾掉以on...開頭的所有內容來獲取元素上的所有可用事件。

要將其傳遞給jQuery, on...部分也必須刪除

var props = Object.keys(document.body).filter(function(x) {
    return x.indexOf('on') === 0;
}).map(function(x) {
    return x.replace('on','');
}).join(" ");

$('body').on(props, '.element', function(e) {
    console.log(e.type)
});

小提琴

在我的瀏覽器中,將事件處理程序綁定到

卸下
存儲
popstate
pageshow
pagehide
線上
離線
信息
languagechange
hashchange
beforeunload
滾動
調整
加載
焦點
錯誤
模糊
autocompleteerror
自動完成
等候
volumechange
切換
timeupdate
暫停
提交
停滯
節目
選擇

seeked
重啟
ratechange
進展
播放

暫停
鼠標滾輪
鼠標松開
鼠標移到
鼠標移開
鼠標移動
鼠標離開
的mouseenter
鼠標按下
loadstart
等待loadedmetadata
loadeddata
KEYUP
按鍵
KEYDOWN
無效
輸入
結束
清空
durationchange
下降
的dragstart
的dragover
dragleave
的dragenter
dragend
拖動
DBLCLICK
cuechange
上下文菜單

點擊
更改
canplaythrough
可以玩
取消
退出
webkitfullscreenerror
webkitfullscreenchange

選擇開始
搜索


復制
beforepaste
beforecut
beforecopy

不應該將所有事件綁定到您的處理程序,因為您不知道什么是“全部”,因此對於幾乎所有應用程序來說都是不好的做法。 同樣,您不能綁定到所有事件,因為jQuery內部使用的addEventListener要求您聲明要偵聽的類型。 即使您具有“所有”事件的列表,仍然可以定義具有其任意名稱的自定義事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM