這一切都取決於你如何提交表單到服務器。
如果您在提交表格已設定的:remote => true
屬性將通過一個AJAX調用發送到服務器,服務器將能夠執行從一個普通的非Ajax形式的請求區別開來:
respond_to do |format|
format.js #this renders the <actionname>.js.erb file and executes it on the client
end
jquery_ujs幫助程序將執行服務器返回給他的JavaScript代碼。
你可以只寫在你的<actionname>.js.erb
文件任意JavaScript代碼可能看起來是這樣的:
$('#trigger_link').text('edit comment');
如果您在使用遙控形式,而是做一個正常的$.ajax
叫你可以簡單地鉤到success
jQuery提供的回調函數,但我想這很明顯。
更新:
好像問題是,你不知道什麼是鏈接觸發的對話框開幕。
通常在某處你有一個jQuery函數來爲你打開對話框。當渲染包含觸發鏈接的初始列表時,我假設你有一些方法可以將它們與頁面上的其他鏈接區分開來(可能通過類似.trigger
的css類)。
你可以再做:
$('.trigger').click(function() {
window.trigger_link = this;
});
需要注意的是這個小片段上方不會覆蓋打開彈出現有的單擊事件處理程序。它也被執行。
所以現在我們跟蹤打開窗口的鏈接(窗口打開時點擊觸發鏈接 - 我們總是保存最後點擊的觸發鏈接),我們可以在提交表單後執行以下操作:
$(window.trigger_link).text('edit comment');
由於window.trigger_link引用了正確的鏈接。
我的問題是關於*「檢索」*/*「建設」*觸發鏈接(在你的答案,例如,你命名'trigger_link')適當的CSS'ID'因爲:(1) AJAX呈現的表單與其自己的CSS「id」相關(AJAX請求由另一個控制器操作處理,它已經設置了自己的CSS'id's); (2)我在同一頁面中有很多觸發鏈接,每個鏈接都設置了自己的CSS'id'。 – Backo
換句話說,我*不能「直接知道」*(因此我無法正確地「建立」)來自/在「 .js.erb」模板中的觸發器鏈接的CSS id(也許,有一些*常見*方式 - 我不知道 - 爲了解決這個問題...)。 –
Backo
您可以通過'$('form submit')。text()'..來訪問按鈕,並且容納表單的容器也應該是已知的。所以'$('form submit',$('#containerId'))。text()'應該可以工作 – Tigraine