我有一个jquery mouseover事件,它成功调用了一个javascript函数
$(document).ready(function() {
$('.nw').mouseover(run_nw);
});
function run_nw() {
...
}
然而,当我尝试传递参数时,js失败。
$(document).ready(function() {
$('.nw').mouseover(run_nw(1));
});
var a;
function run_nw(a) {
...
}
尝试通过SO和jQ文档查看,但我仍然难过。我假设这是一个简单的格式化问题。
由于
(如果有帮助,这是完整的代码)
<script>
var $ = jQuery.noConflict();
var incr = 650;
function run_nw() {
//move x and y
var topAdjust = -incr;
var leftAdjust = -incr;
var top = parseInt($(this).css('top'))+topAdjust;
var left = parseInt($(this).parent().css('left'))+leftAdjust;
//rotate
var randomnumber = Math.floor(Math.random()*11);
var rotate = -randomnumber*10;
$(this).animate({
top:top,
left:left,
'rotate':rotate
}, 700, 'swing');
}
$(document).ready(function() {
$('.nw').mouseover(run_nw);
});
</script>
答案 0 :(得分:4)
用匿名函数包装函数调用:
$('.nw').mouseover(function() {
run_nw(1);
});
您当前拥有它的方式将执行该函数,并将该函数的结果作为回调传递给mouseover
。
<强>更新强>
当前代码的问题在于,在事件处理函数中,this
没有引用您期望的内容(它指的是Window,因为您从匿名回调调用函数到{ {1}} - 匿名回调中的mouseover
就是你想要的那样。)
因此,您需要将this
传递给函数并将对this
的任何引用更改为您选择命名该参数的任何内容:
this
这是一个updated fiddle。