从jquery向javascript函数发送一个变量

从jquery向javascript函数发送一个变量,javascript,jquery,Javascript,Jquery,我有一个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) {

我有一个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) {
...
}
我试着翻阅了这么多jQ文档,但我还是被难住了。我假设这是一个简单的格式问题

谢谢

(如果有帮助,请参阅完整代码)


var$=jQuery.noConflict();
var incr=650;
函数run_nw(){
//移动x和y
var topAdjust=-incr;
var leftAdjust=-incr;
var top=parseInt($(this).css('top'))+topAdjust;
var left=parseInt($(this).parent().css('left'))+leftAdjust;
//轮换
var randomnumber=Math.floor(Math.random()*11);
变量旋转=-随机数*10;
$(此)。设置动画({
顶:顶,,
左:左,,
“旋转”:旋转
},700,‘摇摆’;
}
$(文档).ready(函数(){
$('.nw').mouseover(run_nw);
});

将函数调用包装在匿名函数中:

$('.nw').mouseover(function() {
    run_nw(1);
});
您当前使用的方式将执行该函数并将其结果作为回调传递给
mouseover

更新

当前代码的问题在于,在事件处理程序函数中,
this
并不是指您期望的内容(它指的是窗口,因为您是从匿名回调调用函数到
mouseover
-
匿名回调中的this
就是您想要的内容)

因此,您需要将
this
传递到函数中,并将对
this
的任何引用更改为您选择命名该参数的任何内容:

$('.nw').mouseover(function() {
    run_nw(1, this);
});
function run_nw(a, elem) {
    //Now `elem` is what you expected `this` to be
}

下面是一个。

将函数调用包装在匿名函数中:

$('.nw').mouseover(function() {
    run_nw(1);
});
您当前使用的方式将执行该函数并将其结果作为回调传递给
mouseover

更新

当前代码的问题在于,在事件处理程序函数中,
this
并不是指您期望的内容(它指的是窗口,因为您是从匿名回调调用函数到
mouseover
-
匿名回调中的this
就是您想要的内容)

因此,您需要将
this
传递到函数中,并将对
this
的任何引用更改为您选择命名该参数的任何内容:

$('.nw').mouseover(function() {
    run_nw(1, this);
});
function run_nw(a, elem) {
    //Now `elem` is what you expected `this` to be
}

这是一封信。

谢谢你,詹姆斯。我试过了,恐怕没用。我甚至用“run_nw()”尝试了这种格式,js的参数中没有变量。真奇怪。我以为你的解决方案会奏效。你能在jsfiddle.net上发布一个例子吗?这将使我们更容易发现问题所在;elem.ownerDocument是未定义的源文件:行:6766,在我的本地服务器中:elem.ownerDocument是未定义的源文件:行:6566,您的问题不在于鼠标悬停……我认为这和“This”被破坏有关。@alper,是的,这是因为它引用了相对路径。这就是为什么我把密码记下来了。jquery工作得很好,因为我在函数中没有参数的情况下对它进行了测试,它工作得很好。谢谢,詹姆斯。我试过了,恐怕没用。我甚至用“run_nw()”尝试了这种格式,js的参数中没有变量。真奇怪。我以为你的解决方案会奏效。你能在jsfiddle.net上发布一个例子吗?这将使我们更容易发现问题所在;elem.ownerDocument是未定义的源文件:行:6766,在我的本地服务器中:elem.ownerDocument是未定义的源文件:行:6566,您的问题不在于鼠标悬停……我认为这和“This”被破坏有关。@alper,是的,这是因为它引用了相对路径。这就是为什么我把密码记下来了。jquery工作得很好,因为我在函数中没有参数的情况下对它进行了测试,它工作得很好。谢谢。一个小错误:当使用
parseInt
时,应该将数字10作为第二个参数传递。如果你不这样做,那么可怕的事情就会发生。例如,如果您的数字以零开头,我认为JS将其解释为十六进制并使用基数16。一个小错误:当使用
parseInt
时,您应该将数字10作为第二个参数传递。如果你不这样做,那么可怕的事情就会发生。例如,如果你是一个以零开头的数字,我认为JS将其解释为十六进制,并使用基数16。