很奇葩的问题,代码如下:
再上个图:
本来在submit()之间写了$.ajax()方法,但是没有执行,于是写成最简单的方法,在中间写了个alert(goUrl),再尝试用console.log(goUrl)也没有执行,结果如图上,调试的时候直接从200行跳到202行去了,中间的alert()被忽略了。
jquery是v1.8.0,实在搞不懂,求指导。
初充回答1:
console.log($('#example'));
$('#example').submit(function(){
alert(goUrl);
});
如上,console.log($('#example'));可以获得到对象,面板中有输出,但是到了submit()这一行,还是直接跳出了。
补充回答2:
如上,3点:
1.我以前是在subit()中使用了return false,经测试与使用event.preventDefault()效果一样,不知道有没有别的什么区别?
2.我一直是在submit()中使用$.ajax(),如下:
$('#example').submit( function(event) {
event.preventDefault()
$.ajax({
// 你的代碼
})
})
测试很多遍,代码只走到submit()在外层就直接跳出了,里面没有执行,不知道为什么。
我现在把$.ajax()写到submit()外面来,反倒是可以的,想必还是什么地方有问题。
3.由于我用的是intpu type="button" + 事件提交,是不是本身并没有调用到$('#example').submit()事件? 那么上面的submit()部分本来就是多此一举?
.
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
釐清一個觀念
如果你是想在表單送出時,阻擋原本事件並轉為用
ajax送出因為多了蠻多問題,所以一個一個回答:
首先,$('#form').submit(function(event){ ... }) 綁定的事件監聽,是監聽
submit這個event,所以不管觸發方式如何,都會執行這邊設定的callback這邊舉幾個例子:
還有關於
event.preventDefault()和return false的差別:event.preventDefault()是阻止事件預設的瀏覽器事件繼續執行,何謂瀏覽器事件,就像是點擊<a href="...">網頁會跳轉,點擊submit提交表單也會跳轉,等等預設的事件,但並不是所有元素的操作都會引起瀏覽器事件。event.stopPropagation()是阻止事件冒泡,所謂的事件冒泡是當一個元素的事件被觸發時,其會沿著父元素一路往上觸發(父元素也有設置事件監聽時),下面寫了個小例子可以按按看: jsFiddlereturn false這個比較複雜,當你return false時,其效果等同於event.preventDefault()+event.stopPropagation()+跳出回調函數+返回 false,所以最好在清楚自己代碼思路的情況下慎用,不然容易產生難以debug的錯誤至於你寫的這段代碼:
這邊包在
sub中不太對:這邊不太懂你想要做的是什麼,可以詳細敘述下