2014-07-18 24 views
2

這是我的代碼:爲什麼我不能繞過function()的hover()?

$(".link").hover(
    function() { 
     FunctionA($(this)); 
    }, 
    function() { 
     FunctionB(); 
    } 
); 

爲什麼我不能只是寫:

$(".link").hover(
    FunctionA($(this)), 
    FunctionB() 
); 

將快代碼...

+1

當你使用它的時候,首先調用函數,然後這些函數返回的值作爲參數傳遞給'hover()',在這種情況下,你可以傳遞'FunctionB',因爲它不需要任何參數。 (function(){functionA($(this)); },FunctionB);'應該很好 –

+0

嘗試'$(「.link」).hover(FunctionA ,FunctionB);' – ostapische

+0

@ostapische'FunctionA'需要參數 –

回答

2
$(".link").hover(
    FunctionA($(this)), 
    FunctionB() 
); 

傳遞$(這)是完全無用。逸岸,如果你打電話(你可以)用這種方式懸停:

$(".link").hover(FunctionA, FunctionB); 

在泛函,您可以訪問到呼叫者:

var FunctionA = function() { 
    console.log($(this)); 
    /* will print $(".link") */ 
} 

Example這裏。

基本上,您可以在api documentation中看到,懸停需要兩個不帶參數的處理函數(handlerIn和handlerOut)。

+0

但'var FunctionA'它不是一個Handler,它是一個鏈接到一個函數的變量。我需要使用'function FunctionA(){}' – markzzz

+0

@markzzz它們是相同的,如果您在'window'上下文中使用它。當你在其他'function'變量中使用'var something ='時,只能在該''function'中訪問。 – ostapische

相關問題