早上的人。如何让我的javascript或jquery在动态生成的内容中工作。
基本上,我已经创建了根据用户在导航菜单上单击的内容生成内容的网页。
我面临的问题:
- 当主页从内容页面生成内容时,jQuery或JavaScript将不起作用。
- 但是当我单独打开内容页面时,一切正常。
通过搜索收集的信息:
jQuery.load() 方法忽略与动态生成的内容一起出现的脚本标记。
所以我尝试以下方法:
- 将我需要的标签放在主页中,而不是内容页面中。 它不起作用。 似乎 jQuery 找不到内容元素,因为它们是动态生成的。
- 由于jQuery.load()忽略了脚本标签,我尝试了纯javascript ajax,就像 w3schools.com 如何教授xmlhttp的方式来生成内容。它不起作用。
- 单击按钮时,控制台中没有响应。
示例联系人.php
<script type="text/javascript">
$(function() {
$("#submitUser").click(function(e) {
var fname = $("#fname").val();
$("#theresult").text(fname);
e.preventDefault();
});
});
<form id="contactForm">
<label for='fname' >First Name</label><br/>
<input id="fname" type="text" name="fname" maxlength="100" />
</form>
<div id="theresult"></div>
当此联系人.php动态生成到其他页面时,它不起作用。当我单击"提交"按钮时,控制台没有显示任何响应。似乎 jquery 不存在。
但是当我在浏览器中单独打开它时,它可以工作。
对于动态生成的元素,您应该委托事件,您可以使用on
方法:
$(function() {
$(document).on('click', '#submitUser', function(e) {
var fname = $("#fname").val();
$("#theresult").text(fname);
e.preventDefault();
});
});
live()
方法已弃用。
由于您的问题没有得到很好的描述,因此在这里疯狂地刺伤,但也许您正在尝试使用.click()
等将事件绑定到动态加载到页面中的东西?
如果是这样,您可能想改为查看.on()
。
您需要使用实时事件。
例如,如果您生成的内容包含点击事件,则可以执行以下操作:
$(".something").live("click", function({
// do something
)};
对于动态生成的字段,请使用 .on() JQuery 方法:
$(document).on('click', '#MyID', function(e) {
e.preventDefault(); // or you can use "return false;"
});