2013-02-18 58 views
2

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

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

在此先感谢

$(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'); 
      } 
     } 
    }; 

回答

3

您所呼叫的function(处理)而不是传递的功能(处理)的reference(名称)on()

变化

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

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

完全错过了。谢谢! – charliexx 2013-02-18 09:22:57

+0

欢迎您@charliexx。 – Adil 2013-02-18 09:25:35

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); 
});