gpt4 book ai didi

javascript - 选择 div 中的所有 Form 并防止默认操作

转载 作者:行者123 更新时间:2023-12-02 19:05:51 29 4
gpt4 key购买 nike

我想在中途停留时显示我网站的一部分。如果用户没有 JavaScript,则停留会显示为普通网站。

我使用 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;
});
}

最佳答案

您没有提供任何 html 代码。很难说这里是否存在更多问题,例如元素是否真的是 #popup 的子元素。但首先尝试使用:

return false;

相反:

e.preventDefault();

您还可以使用:$("#Popup form") 而不是 $("#Popup > form") 这是更安全的方法。

关于javascript - 选择 div 中的所有 Form 并防止默认操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318229/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com