1

だから私は次のjQueryを持っています:

<script type="text/javascript">

    // Init.
    $(function () {

        // Wire up the search box.
        $('#searchButton').click(
            search($('#query').val(),
                $('aaa').val(),
                $('bbb').val()
            ));
    });

</script>

しかし、最初にページにアクセスしたとき、search関数が起動されています(ブレークポイントをそこに置いたため)。

私のコード(上記)は次のように言っていると思いました:クリックイベントを配線し、誰かがそのボタンをクリックすると、次のコードは=>次の3つの引数を持つ検索関数と呼ばれます)

誰かが私が間違ったことを教えてもらえますか?

4

5 に答える 5

8

関数参照を期待しているからです。あなたがしているのは、search()を実行し、その結果を参照として渡すことです。

<script type="text/javascript">

    // Init.
    $(function () {

        // Wire up the search box.
        $('#searchButton').click(function() {
                search($('#query').val(),
                    $('aaa').val(),
                    $('bbb').val()
                ));
            }
    });

</script>
于 2013-01-04T01:54:34.723 に答える
6

ハンドラーコードを無名関数内にラップする必要があります。

それ以外の場合、 search()が評価され、結果がクリックハンドラーに適用されます。

これを試して:

$(function () {
    $('#searchButton').click(function () {
        search( $('#query').val(),
                $('aaa').val(),
                $('bbb').val() 
        );
    });
});
于 2013-01-04T01:54:07.733 に答える
1

1 つのパラメータで関数「クリック」を呼び出しているため、「search();」が返され、関数コールバックではありません。

于 2013-01-04T01:56:58.567 に答える
1

これはどう?

<script type="text/javascript">

    // Init.
    $(function () {

        // Wire up the search box.
        $('#searchButton').click(function() {
            search($('#query').val(),
                $('aaa').val(),
                $('bbb').val()); }
            );
    });

</script>

クリック イベントに無名関数をアタッチsearch($('#query').val(),$('aaa').val(),$('bbb').val());し、関数を呼び出します。

于 2013-01-04T01:57:46.333 に答える
-3
    $('#searchButton').live('click',function() {
        whatever...
    });
于 2013-01-04T01:56:37.787 に答える