我有一個通用外部文件document.ready()
和$('form').submit()
操作,但是,我想從包含該文件的其中一個文件中覆蓋此操作,該文件包含document.ready()
。內部JQuery document.ready覆蓋外部文件
換句話說,我希望我的內部document.ready()
應該在$('form').submit()
工作之前對錶單執行附加檢查。
我有一個通用外部文件document.ready()
和$('form').submit()
操作,但是,我想從包含該文件的其中一個文件中覆蓋此操作,該文件包含document.ready()
。內部JQuery document.ready覆蓋外部文件
換句話說,我希望我的內部document.ready()
應該在$('form').submit()
工作之前對錶單執行附加檢查。
在你的內部代碼,你可以嘗試停止submit
事件的直接傳播:
$(function() {
$('form').on('submit.immediate', function (event) {
event.stopImmediatePropagation();
});
});
然後當你想要的形狀,以便能夠再次提交你可以刪除這個綁定:
$('form').off('submit.immediate');
這隻會刪除submit
事件處理程序附加的immediate
命名空間,所以其他綁定將保持不變。
這完全可能我不完全理解你的問題。您可能只需要綁定一個事件處理程序到停止自己的能力的形式(一個或多個)來發送,直到你決定送他們:
$(function() {
$('form').on('submit.immediate', function (event) {
event.preventDefault();
});
});
event.preventDefault()
將被提交停止物(S),那麼你一旦你想提交表單就可以刪除這個事件處理程序。
注意.on()
/.off()
jQuery中1.7和在上面使用的情況下是新的中的相同.bind()
/.unbind()
:http://api.jquery.com/on,http://api.jquery.com/off
文檔爲event.stopImmediatePropagation()
:
保持的其餘部分處理程序被執行並阻止事件冒泡DOM樹。
我看到有多種方式來完成這項任務。但是,它是一種中斷事件處理的靈活而有效的方式嗎?如果你建立你的結構來防止這種東西,那不是更好嗎?你可以使用回調或發佈和訂閱,以保持它的乾淨和可擴展 – danwit 2012-02-14 20:07:19
我真的不知道你在做什麼。您需要發佈代碼以獲取更多信息。使用命名空間來綁定事件是個不錯的主意,就像我在回答中所做的一樣,所以如果需要,可以刪除特定的事件處理程序。如果你可以刪除你不想使用的事件處理程序,那麼這真的是最好的方法,否則就是打斷它的運行能力,只要你不會一次對很多元素做這件事,你就不會注意到任何性能下降。 – Jasper 2012-02-14 20:10:12
很好的答案,謝謝。但即時通訊想知道你是否可以確定事件在正確的時間中斷。據我所知,你會同時發射兩個事件,一個提交一個,一個打斷。但我從來沒有聽說過提交。立即「是一個自我聲明的命名空間,還是一個在正常的'.submit()'之前觸發的jquery指令? – danwit 2012-02-14 20:20:31
我的做法是:
var formActions = new function() {
this.form = $('form');
this.doStuff = function() {
//Do Stuff
//If you got more than one form
$.each("this.form", function(i, v) {
//PlayWithForm
})
this.submit();
};
this.submit = function() {
this.form.trigger("submit");
}
}
$.fn.ready(function() {
formActions.doStuff();
})
好吧。但爲什麼你需要多個document.ready()。 PROTIP使用'$ .fn.ready()'它的coolkids – danwit 2012-02-14 19:55:20