为什么在加载页面后会立即触发悬停事件?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="" id="1">sup</a>
void makeit(string what){
const char* options_in[];
if(what == "option1"){
options_in[] = {"set1", "set2", "set3"};
} else {
options_in[] = {"set1"};
}
/* ... */
}
答案 0 :(得分: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>
答案 1 :(得分: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>