3

ねえ、私はjquery関数を呼び出して、次の形式でいくつかの引数を渡そうとしています

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

function exampleFunction(arg1,arg2)

この関数は、このように記述された引数がなくても正常に機能します。

$('#button').mouseenter(exampleFunction);

function exampleFunction;

しかし、関数に引数を入れるために()を追加するとすぐに機能しなくなります。

このような:

$('#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()の違いは、1つは関数へのポインターであり、もう1つは関数の実行結果です。

試す

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

ここで、関数を定義して渡します。定義された関数は、aとbの2つの引数を取ります。

于 2010-07-30T22:38:43.763 に答える
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%");

于 2010-07-30T23:40:03.383 に答える
0

そのためのjQueryプラグインがあると思います。
ここを見てください:http: //plugins.jquery.com/

于 2010-07-30T23:46:15.377 に答える