2011-07-28 38 views
0

所以我有這樣jQuery Unbind()函數中的所有內容?

function onLoadMe() { 
//stuff in function 
} 

一個功能和第二功能

function onLoadMeSecond() { 
    //stuff in function 
    } 

我想嘗試並綁定在頁面加載onLoadMe(),但隨後在onLoadMe()解除綁定的一切,加載第二個功能onLoadMeSecond()爲元素?

jQuery('#some-id').click(function() { 
    jQuery(this).unbind(onLoadMe()); 
    onLoadMeSecond(); 
}); 

我怎麼能做到這一點作爲上述不起作用?

編輯:見例如http://jsfiddle.net/cer9R/5/

+0

您的jsfiddle示例中的邏輯流程存在問題。你想在你的代碼中完成什麼? –

+0

不知道什麼邏輯問題是=看@@jsfiddle.net/cer9R/5/ - 基本上,'onLoad()'應該加載,如果我點擊'test3',那麼它應該'解除綁定(onLoad)'和顯示'test2'?但它不? – Tom

回答

1

正確的語法爲$(window).unbind('load',onLoadMe)

儘管在JsFiddle示例中,您正在綁定文檔準備好的處理程序,而不是頁面加載。要取消綁定,您可以使用$(document).unbind('ready')。當然,使用文檔就緒事件來綁定一個單擊處理程序將會解除(已完成)文檔就緒處理程序,這是毫無意義的。

+0

傳說 - 似乎工作:-)請參閱@ http://jsfiddle.net/cer9R/8/ - 但它似乎仍然可以單擊'#測試',它的工作原理?即點擊事件不是解除綁定? – Tom

+0

那麼如果你想解除綁定點擊處理程序,你應該使用'$('#test')。unbind('click')'。我明白你的問題是關於解除綁定負載處理程序。 – Tgr

+0

我想實際解除綁定在'onLoad'中的所有內容?即不管它是否是點擊? – Tom

0

沒有ü嘗試這樣寫?

jQuery(this).unbind("onLoadMe"); 

或者只是這個

jQuery(this).unbind(); 
0

從接參數刪除()

jQuery('#some-id').click(function() { 
    jQuery(this).unbind(onLoadMe); 
    onLoadMeSecond(); 
}); 

onLoadMe,而不是onLoadMe()

+0

正確 - 您正在調用該函數,而不是提供指向該函數的指針。 – Soren

+0

@Makram @Soren - 問題似乎是我得到一個錯誤。即查看http://jsfiddle.net/cer9R/1/ - 用FF中的Firebug?你可以看到生成的錯誤就像'types.split不是函數' – Tom

+0

什麼?這完全不是[[.bind](http://api.jquery.com/unbind/)的工作原理。你應該傳遞一個事件類型或事件對象。無論如何,load事件都綁定在'window'對象上。 – Tgr