[英]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.