$('#button').mouseenter(exampleFunction(arg1,arg2));
function exampleFunction(arg1,arg2)
该函数工作正常,没有这样的args。
$('#button').mouseenter(exampleFunction);
function exampleFunction;
但是只要我添加()将args放入函数就会停止工作。
像这样:$('#button').mouseenter(exampleFunction());
我觉得这是某种jquery语法错误
这是实际的代码
<script type="text/javascript">
$(document).ready(function() {
$('.section').mouseover(function(){
$('#nav2').fadeOut(0).animate({"height":"30px"}, 250);
});
$('#section1').hover(navSelect);
function navSelect(){
if ( $('.interior').is(':hidden')){
$('.subSection').fadeOut(250);
$('.interior').delay(250).fadeIn(250);
$('#selector').animate({"left":"0px"},250);
}}
$('#section2').mouseenter(function(){
if ( $('.exterior').is(':hidden')){
$('.subSection').fadeOut(250);
$('.exterior').delay(250).fadeIn(250);
$('#selector').animate({"left":"100px"},250);
}
});
$('#section3').mouseenter(function(){
if ( $('.view').is(':hidden')){
$('.subSection').fadeOut(250);
$('.view').delay(250).fadeIn(250);
$('#selector').animate({"left":"200px"},250);
}
});
});
</script>
答案 0 :(得分:5)
JavaScript中的函数是一流的对象。您可以将它们放在变量中,从其他函数返回它们等。当您编写$('#button').mouseenter(exampleFunction(arg1,arg2));
时,您说“使用这些参数运行exampleFunction,并使用其返回值作为回调”。
要让jQuery稍后使用这些参数调用该函数,您可以使用匿名内联函数:
$('#button').mouseenter(function() {
exampleFunction(arg1,arg2)
});
您的无参数函数将被调用,并将正确的参数传递给您实际想要调用的函数。这是一个穷人的closure。
答案 1 :(得分:1)
funktion和funktion()之间的区别在于,一个是指向函数的指针,另一个是函数执行的结果。
尝试
mouseenter(function(a,b){....})
你正在定义函数并将其传入。定义的函数需要2个参数,a和b。
答案 2 :(得分:0)
在jQuery中绑定到事件的函数是从jQuery调用方法传递的'event'对象。
jQuery("#button").mouseenter(function(evt){[ do something ]});
如果你想做类似
的事情
$('#button').mouseenter(exampleFunction(arg1,arg2));
为了模板化你想要绑定到事件的函数,你可以构造一个这样的函数:
function exampleFunction(arg1, arg2){
return function(evt){
jQuery(this).animate({width: arg1, height: arg2},250)
};
}};
让它返回绑定的函数(从而传递事件对象), 然后将其绑定到像
这样的元素
jQuery("#button").mouseenter(exampleFunction("50%","50%"))
.mouseleave(exampleFunction("100%","100%");
答案 3 :(得分:0)
我相信有一个jQuery插件。
看这里:http://plugins.jquery.com/