html - 结合表单使用jquery加载功能
问题描述
目前正在开发一个新网站,并希望使用 jQuery 的load()
功能将来自不同 html 页面的内容加载到我的主页中。
load()
工作正常。这是我当前的代码。加载内容的 Main.html 页面:
<div id="answer"></div>
带有功能的Javascript load()
:
$(document).ready(function() {
$("#answer").load( "game1content.html #p1Answer");
game1content.html 要加载的内容:
<div id="p1Answer">
<p>Some text</p>
<form id="answer1Form">
<select name="answer1" id="answer1">
<option value=""></option>
<option value="1">Website 1</option>
<option value="2">Website 2</option>
<option value="3">Website 3</option>
<option value="4">Website 4</option>
</select>
<button id="submitButton">SUBMIT</button>
</form>
</div>
所以它将 html 正确加载到答案 div 中。完美的。
现在的挑战是,当我提交已加载的表单时,它会刷新页面。当我在 main.html 文件中有 game1content 内容时,而不是使用load()
它不会重新加载并且工作正常。但是,如果我使用该load()
功能,它会重新加载并更改 url。
这是我的提交功能:
$( "#answer1Form" ).submit(function(e) {
e.preventDefault();
console.log ("clicked");
});
我试过用谷歌搜索这个问题,但找不到太多。另外,尝试更改.submit
为onclick
etc,但结果相同。有任何想法吗?
解决方案
这是因为当您调用 时.load
,它会获取页面内容并添加 DOM 元素,但不会将它们绑定到事件,因此其form
行为应该是刷新页面。
为了防止表单刷新,您应该在添加 DOM 元素后.submit()
完全像在game1content.html中那样收听。
像这样:
$("#answer").load( "game1content.html #p1Answer", function() {
$( "#answer1Form" ).submit(function(e) {
e.preventDefault();
console.log("clicked");
});
});
推荐阅读
- javascript - AngularJS ng-repeat,表信息依赖
- git - 在 gitlab 中发布 Maven
- node.js - 无法在 Heroku 数据库中进行 Postgresql 操作
- django - Django如何节省表单时间?
- sql - 查询 Cosmos DocumentDB 的上溢或下溢异常
- c# - 如何使用 xPathNavigator 从根获取属性值
- tensorflow - OCR 引擎如何检测扫描中的单个字母?
- python - Ubuntu 18.04 中的 PIP 问题(pkg_resources.DistributionNotFound:未找到“pip==10.0.1”发行版,应用程序需要该发行版)
- django - 如何重构我的 Django 代码?
- javascript - PHP 表单和 Ajax 的问题