簡體   English   中英

事件取決於jQuery上的動態變量

[英]Events depending on a dynamic variable at jQuery

我想知道哪種方法是處理依賴於變量狀態的事件的正確方法。

現在,我有一個僅在選項isTablet設置為true時添加的偵聽器。 (好像沒有,它會在IE的舊版本中損壞)。 所以看起來像這樣:

if(options.isTablet){
    document.addEventListener('touchmove', function(e){
      ....
    });
}

現在,如果要用設置器動態更改變量isTablet ,會遇到麻煩,並且不會加載touchmove事件。

$.fn.myPlugin.setIsTablet = function(value){
    options.isTablet = value;
}

我猜最簡單的方法是始終添加事件並在事件內部確定是否執行代碼:

document.addEventListener('touchmove', function(e){
    if(options.isTablet){
        ....
    }
});

但是在IE 8中引發錯誤:

對象不支持屬性或方法“ addEventListener”

這樣做的方式是什么? 謝謝。

通常,我總是會添加偵聽器並檢查其中的條件。 為避免錯誤,由於使用的是jQuery,只需使用jQuery:

$(document).on('touchmove', function(e){
    if(options.isTablet){
        ....
    }
});

如果您有一個經常調用的處理程序,則可以考慮在不需要時將其關閉。 像這樣:

function myHandler(e) { ... }

$.fn.myPlugin.setIsTablet = function(value){
    options.isTablet = value;
    if (value) {
        $(document).off('touchmove').on('touchmove', myHandler);
    } else {
        $(document).off('touchmove');
    }
}

注意不要多次綁定處理程序(例如,如果true setIsTablet多次發送給setIsTablet )。 您也可以使用標志而不是像我所示的那樣取消綁定/綁定。

暫無
暫無

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

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