簡體   English   中英

如何更好地處理事件

[英]How to better handle events

如果我在一個元素上有多個事件,我正在處理這些事件,如下所示:

$("body").on("click", ".element", function(e) {
    // Do something on click
});

$("body").on("change", ".element", function(e) {
    // Do something on change
});

有沒有辦法在一個on()調用中組合元素上的所有事件? 如果有多個事件與一個元素相關聯,最佳做法是什么?

$("body").on("change click", ".element", function(e) {
    // Can I detect here if it was change or click event and perform an action accordingly?
});

您可以使用事件的type屬性來確定要執行的邏輯:

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

或者,也可以提供一個目的是on其中包含與事件類型名稱作為鍵結合功能:

$('body').on({
    click: function() {
        // do something on click...
    },
    change: function() {
        // do something on change...
    }
}, '.element');

我個人會使用后一種方法。 使用一個相當丑陋的if語句來分割事件類型時,取消了統一on()處理程序的重點。

是! jQuery傳遞包含事件信息的事件對象:

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

您可以使用event.type 有人會說這是不好的做法,其他人可能會發現它很有用。

$("body").on("change click", ".element", function(event) {
    switch (event.type) {
        case 'click':

        break;
        case 'change':

        break;
        default:
    }
});

jQuery event.type

 $('#element').on('keyup keypress blur change', function(event) { alert(event.type); // keyup OR keypress OR blur OR change }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" id="element" /> 

暫無
暫無

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

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