3

嘿,我试图调用一个 jquery 函数并以它的形式传递一些参数

$('#button').mouseenter(exampleFunction(arg1,arg2));

function exampleFunction(arg1,arg2)

该函数可以正常工作,没有像这样编写的参数。

$('#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>
4

4 回答 4

5

JavaScript 中的函数是一流的对象。您可以将它们放入变量中,从其他函数中返回,等等。当您编写 时$('#button').mouseenter(exampleFunction(arg1,arg2));,您是在说“使用这些参数运行 exampleFunction,并将其返回值用作回调”。

要让 jQuery 稍后使用这些参数调用函数,您可以使用匿名内联函数:

$('#button').mouseenter(function() {
    exampleFunction(arg1,arg2)
});

您的无参数函数将被调用,并将正确的参数传递给您实际要调用的函数。这有点像穷人的倒闭

于 2010-07-30T22:39:07.473 回答
1

funktion 和 funktion() 的区别是一个是指向函数的指针,另一个是函数执行的结果。

尝试

 mouseenter(function(a,b){....})

在那里您正在定义函数并将其传入。定义的函数需要 2 个 args,a 和 b。

于 2010-07-30T22:38:43.763 回答
0

您在 jQuery 中绑定到事件的函数从 jQuery 方法调用中传递了“事件”对象。

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%");

于 2010-07-30T23:40:03.383 回答
0

我相信有一个 jQuery 插件。
看这里: http: //plugins.jquery.com/

于 2010-07-30T23:46:15.377 回答