2011-11-30 80 views
0

我正在處理的代碼太複雜了,所以我無法在這裏粘貼我的代碼。爲什麼jquery live()在委託()不工作時工作?

但我遇到的情況是taht:包括在兩個不同的HTMLS,
在一個HTML的delegate()工作,但在對方只是沒有影響 .js文件。
然後,我用live()替換delegate(),然後在兩個html中工作正常。

我只是好奇爲什麼發生這種情況..
可能是因爲我在兩個htmls中包含太多不同的js文件,並可能導致一些衝突嗎?

+0

你能給我們一些這兩個例子的代碼? –

+0

您是否正在通過AJAX在其他頁面上重新載入您設置了委託()的選擇器,因爲這可能是它不起作用的原因 – TommyBs

+0

這是一個太理論化的問題。如果你提供了js和html文件的最小版本,這將是非常有用的,所以我們可以看看。 – kubetz

回答

3

你不得不暗示,當你委託()一些元素,當你調用委託時,該元素必須出現在dom中。

所以,如果你

$('#mycontainer').delegate(.... 

與ID myContainer中的元素必須存在,否則委託()將無法工作。一個解決辦法,導致一些開銷委託給document或到body

$('body').delegate() 

直播()總是工作,因爲現實中你是委託給身體。

+0

謝謝!我認爲第一點可能是原因。我認爲delegate()只是live()的一個更高效的替代。我沒有注意到delegate()需要已經設置的元素。 – Aloong