2013-11-21 30 views
0

如果您在設置滑塊時使用命名函數,它爲什麼不起作用?JQuery UI命名回調

這工作:

$("#slider").slider({ 
    change: function (event, ui) { 
     sliderCb (event,ui) 
    } 
}); 

使用這個不...

$("#slider").slider({ 
    change: sliderCb (event, ui) 
}); 

我猜你是爲了下面的例子,但我很想知道爲什麼不工作,是否與函數調用/定義的上下文有關?你怎麼能用這個匿名函數來完成這項工作,或者我是否在咆哮着錯誤的樹?

Simon

+0

不應該使用'$(「#slider」).slider({change:sliderCb});',發佈的語法不正確 –

回答

1

第一個示例是將anonymous函數聲明分配給change屬性。第二個示例是執行一個已命名的函數並將返回值分配給更改屬性。

你可以指定命名功能很好,你只是有語法有點過:

var sliderCb = function (event, ui) { 
    ... 
}; 

$("#slider").slider({change: sliderCb }); 

注意sliderCb在技術上並不在這個例子中一個名爲功能,但這是另一個問題...

+0

好吧我猜對象文字中的f()會調用函數。乾杯:-)我完全走錯了路!它的工作原理... –

+0

@SimonParker正確,沒有'function'關鍵字使它成爲一個聲明,解釋器會認爲你正在執行一個函數,而不是聲明參數來接受。 – jbabey