我想在停留期間顯示我的網站的一部分。如果用戶沒有JavaScript,則中途停留顯示爲普通網站。選擇div中的所有表單並阻止默認操作
我收到的網址爲getController
,我的問題發生在handleLinksAndForm
。
$("#Popup > a").click(function(e){
e.preventDefault();
getController($(this).attr("href").substr(1),element);
});
這可按預期工作。每當點擊Popover div中的Anchor元素時,都會阻止默認操作並將新網站加載到彈出窗口中。
$("#Popup > form").each(function() {
alert(this.name);
});
$("#Popup > form").submit(function(e) {
alert("form");
e.preventDefault();
getPostController($(this).attr("action"),$(this).serialize(),element);
return false;
});
但是,這部分不起作用。無論是foreach部分還是.submit()。
所以我的問題是:我的錯誤是什麼?如果我使用$("form").each(function() {...
所有表單都被識別,但是如果我添加額外的選擇器#Popup,則不會識別。
完整代碼:
function getController(ctrl,element)
{
$.get('/service/controller/' + ctrl, function(data){
handleLinksAndForm(data,element)
})
}
function getPostController(ctrl,args,element)
{
$.post('/service/controller/' + ctrl,args, function(data) {
handleLinksAndForm(data,element)
});
}
function handleLinksAndForm(data,element)
{
element.html(data);
element.prepend("<div id=\"popupClose\">x</a>");
centerPopup();
$("#popupClose").click(function(){
disablePopup();
});
$("#Popup > a").click(function(e){
e.preventDefault();
getController($(this).attr("href").substr(1),element);
});
$("#Popup > form").each(function() {
alert(this.name);
});
$("#Popup > form").submit(function(e) {
alert("form");
e.preventDefault();
getPostController($(this).attr("action"),$(this).serialize(),element);
return false;
});
}
你確定有針對性的形式#Popup的直接孩子?發佈相關的HTML怎麼樣? –
你可以發佈一些原始的html也做出更清晰的圖片,看來你正在阻止對父元素無法觸發的子元素的默認操作,即形式。並且不要使用'preventDefault()'和'return false'來創建。 – Rohit416
感謝您的努力,但我發現我的錯誤,它與HTML相關。檢查我自己的回答 – jussi