2016-12-05 24 views
0

值這是我的JavaScript代碼:遺漏的類型錯誤,而使用從數據屬性

$(".filter").on('click', function (e) { 
    var filterFunction = $(this).data('strength'); 
    console.log(filterFunction); // Outputs brightness(10) 
    Caman('#canvas', function() { 
      this.filterFunction.render(); 
    }); 
}); 

這是確切的錯誤我得到:Uncaught TypeError: Cannot read property 'render' of undefined

我想用一個單件的代碼來處理所有過濾器。嘗試上述代碼之前,實際的代碼是:

$brightness.on('click', function (e) { 
    Caman('#canvas', function() { 
     this.brightness(10).render(); 
    }); 
}); 

但這樣一來,我將不得不爲每個過濾器不同的處理程序。我想避免這種情況。任何人都可以請幫我解決這個錯誤?

+0

樣子你會需要了解如何'這個的,這是上下文'關鍵字在Javascript中起作用。 [這裏](http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/)是一篇你可以開始的文章。 –

回答

0

時綁定到不同的處理程序,以便不是運行事件的代碼又只是手動觸發該事件時,你需要執行該代碼

$(".filter").on('click', function (e) { 
    $brightness.trigger('click'); //trigger manually click event of $brightness also keep the $brightness handler as it is written 
}); 
相關問題