2015-10-14 29 views
1

爲什麼頁面加載後懸停事件觸發?jquery ::爲什麼要立即懸停觸發器?

function showSelector(position) { 
 
    alert(position); 
 
} 
 
\t 
 
function hideSelector() { 
 
} 
 

 
$("#1").hover(showSelector(17), hideSelector);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="" id="1">sup</a>

回答

2

因爲你調用該函數,而不是引用它。

$("#1").hover(showSelector(17), hideSelector); 
//      ^^^^ 

使用showSelector(17)回調到hover功能將首先調用函數,然後分配給它的返回值與所述懸停回調。爲了解決這個問題,你可以使用匿名函數作爲回調,然後用參數調用裏面的函數。

function showSelector(position) { 
 
    alert(position); 
 
} 
 

 
function hideSelector() {} 
 

 
$("#1").hover(function() { 
 
    // Use anonymous function 
 
    // Call the function with parameter here 
 
    showSelector(17); 
 
}, hideSelector);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="" id="1">sup</a>

2

因爲你是在結尾處增加()調用該函數,你可以做的是通過一個匿名函數作爲的mouseenter回調可以調用showSelector與像

所需的參數

function showSelector(position) { 
 
    alert(position); 
 
} 
 

 
function hideSelector() {} 
 

 
$("#1").hover(function() { 
 
    showSelector(17) 
 
}, hideSelector);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="" id="1">sup</a>