2016-09-16 50 views
2

我在使用函數main()處理2個不同事件時遇到問題。第一個事件是這樣的:

$buttonStart.on('click', main); 

在第二個事件中,我需要做的其他事情太多所以它是這樣的:

$buttonDelay.on('click', function() { 
    otherFunction(); 
    main(); 
}); 

main()功能在最後使用jQuery函數

$(this).ripple(100); 

所以,問題是,在第一種情況下,它的工作完美,同時在第二種情況下它說:

Uncaught TypeError: Cannot read property 'defaultView' of undefined

我不知道該怎麼做才能解決這個問題,爲什麼它的行爲不同。

謝謝你的幫助。

+4

'main.apply(這一點,參數);' – adeneo

+3

*「爲什麼它的行爲不同」*因爲在第二個例子中,'main'的調用方式與第一個例子不同。你需要[瞭解'this'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)。 –

回答

4

您可以使用Function.prototype.call()設置this$buttonDelayotherFunctionmain,你也可以通過事件對象的功能作爲第二個參數.call()

$buttonDelay.on("click", function (event) { 
    otherFunction.call(this, event); 
    main.call(this, event); 
}); 
相關問題