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

因为您正在使用一个参数调用函数“click”,所以“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 回答