在jquery文件中准备好绑定时运行的函数

时间:2013-02-18 09:14:09

标签: javascript jquery binding click

我正在尝试将click事件绑定到下面的函数,但是当文档准备好绑定时,整个函数当前正在运行。

是否可以仅在点击事件上运行它?可能它与我的方法组成方式有关?

提前致谢

    $(function() {
        $("#expand-search").on("click", search.resize());
    });

    var search = {

        element: $('#search_advanced'),

        resize: function() {
            search.element.slideToggle(400, 'swing', search.buttonState());
        },
        buttonState: function() {
            if(search.element.is(':hidden')) {
                console.log('hidden');
            } else {
                console.log('visible');
            }
        }
    };

2 个答案:

答案 0 :(得分:3)

您正在调用function(处理程序),而不是将函数(处理程序)的reference(名称)传递给on()

更改

 $("#expand-search").on("click", search.resize());

 $("#expand-search").on("click", search.resize);

答案 1 :(得分:1)

No parenthesis到事件处理程序!您希望传递要执行的函数,而不是执行它的结果。此外,您需要将search对象移动到就绪处理程序中,因为您使用选择器进行初始化。

$(function() {
    var search = {
        element: $('#search_advanced'),
        resize: function() {
            search.element.slideToggle(400, 'swing', search.buttonState);
        },
        buttonState: function() {
            if(search.element.is(':hidden')) {
                console.log('hidden');
            } else {
                console.log('visible');
            }
        }
    };
    $("#expand-search").on("click", search.resize);
});