2013-02-18 59 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); 
});