我有一個現有的事件重頁,我試圖添加提前支持。打字頭功能按照需要工作,除了它似乎只能附加到輸入項目一次。jQuery Bootstrap - 從輸入中刪除事件後更新提前
問題是,爲了簡單起見,在某些操作之後,現有頁面通過$('input').off()
刪除附加到特定輸入的所有事件,然後根據新的上下文重新附加新的事件處理程序。
這會引起一個問題,即重新附加的typeahead函數似乎從未觸發。 (這裏有一個類似但不同的問題在這裏討論:Trouble updating Bootstrap's typeahead data-source with post response但這是不相關的,因爲我可以更新源罰款 - 我只是無法得到輸入提示觸發,無論我嘗試)
編輯:澄清 - 更改源(如在鏈接的問題中)是而不是問題 - 實際頁面上的源是向服務器發出請求的js函數。問題是調用.off()
似乎永遠打破了前進方向,我無法刪除對.off()
的調用,而不必重寫大部分頁面....下面的代碼和jsfiddle只是我可以設計的最短代碼問題
這裏有一個工作的jsfiddle記錄的問題: http://jsfiddle.net/hz5P3/8/
以供將來參考,完整的代碼如下。要簡要記錄:input.works
text_field只有一個typeahead聲明並且正常工作。 input.no_works
具有調用的typehead功能,然後調用$('.no_works').off()
來移除此輸入上的所有事件。重新連接到此功能的類型根本無法工作。
是否有任何方法可以使第二次調用按預期進行預先工作?
感謝
的Html
<div class="container">
<div class="hero-unit">
<h1>Bootstrap jsFiddle Skeleton</h1>
<p>this is a test typeahead that will work</p>
<input type="text" class="works" style="margin: 0 auto;">
<p>this is a test typeahead that is updated and will not work</p>
<input type="text" class="no_works" style="margin: 0 auto;">
</div>
</diV>
的Javascript
$('.no_works').typeahead({
source: ["cat", "dog", "mouse"]
});
$('.no_works').off();
$('.no_works').typeahead({
source: ["cat", "dog", "mouse"]
});
$('.works').typeahead({
source: ["cat", "dog", "mouse"]
});
對不起 - 我應該讓這個問題更加清晰。源代碼實際上是一個讓js請求發生變化的函數,這不是問題。 .off()作爲現有頁面的一部分存在 - 我無法刪除對.off()的調用,而無需重新編寫現有頁面的大塊。這裏描述的源代碼更改方法來自鏈接問題 - 在這種情況下無法提供幫助,因爲更改源代碼與此問題無關。 –
請參閱我的編輯。值得看看源代碼來了解發生了什麼:https://github.com/twitter/bootstrap/blob/master/js/bootstrap-typeahead.js – laher
很酷。這正是它需要的工作。謝謝!閱讀你的解決方案,我現在可以在源代碼中看到它爲什麼會崩潰=) –