任何想法如何使用JQuery的延遲方法檢測所有更改的表單並將每個表單提交爲Ajax文章?JQuery推遲使用.each()
我可以得到同樣的事情工作,如果我只列出表單提交的負荷,但如果我使用...
$('form.changed').each(function(){
return $(this).submitWithAjax();
});
,我試圖讓工作的代碼更全面的版本在這裏... at JS Fiddle
在此先感謝!
任何想法如何使用JQuery的延遲方法檢測所有更改的表單並將每個表單提交爲Ajax文章?JQuery推遲使用.each()
我可以得到同樣的事情工作,如果我只列出表單提交的負荷,但如果我使用...
$('form.changed').each(function(){
return $(this).submitWithAjax();
});
,我試圖讓工作的代碼更全面的版本在這裏... at JS Fiddle
在此先感謝!
相反 「每()」 中,使用 「.MAP()」:
var deferreds = $('form.changed').map(function(i, elem) {
return $(this).submitWithAjax();
});
$.when.apply(null, deferreds.get()).then(function() { ... });
的 「$。當()」 的東西讓你捆綁了一堆遞延對象,等待所有他們成功(或者任何失敗—注意其中的差異)。它通常允許任意數量的參數,但由於我們有一個數組,我使用了「apply()」。
請注意,我只用過這東西掉以輕心,所以讀jQuery的API文檔,仔細檢查:-) 編輯 —也是在重新閱讀你的問題,我可能誤會你了。
這看起來不錯。我會試一試並回報。 – 2011-05-28 17:47:18
這個完美的作品。謝謝你的幫助。試圖理解它爲什麼現在起作用。 – 2011-05-28 18:06:18
「延遲」功能就是其中的一件非常簡單的功能,但我同意真的很難完全「獲得」機制的工作原理:-) – Pointy 2011-05-28 19:16:40
將更改事件委託給表單字段可以解決您的問題。
$('form').delegate('input[type=text], input[type=radio], select', 'change',
function(evt){
// your submits here
console.log('changed!')
});
感謝您的回覆,但檢測到表單上的更改不是問題。 (「form:input」)。live('change',function(){ //如果表單輸入發生更改,則返回 $(this).closest('form')。addClass(「changed」); });' – 2011-05-28 18:08:05
你能澄清你的問題嗎?我不確定我是否理解(但我很確定我的答案是基於...) – Pointy 2011-05-28 16:54:33