通过搜索收集的信息:
jQuery.load()方法忽略与动态生成的内容一起提供的脚本标记。
所以我尝试以下方法:
示例 contact.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>
当此contact.php动态生成到其他页面时,它不起作用。当我单击“提交”按钮时,控制台显示无响应。好像jquery不存在。
但是当我在浏览器中单独打开它时,它可以工作。
答案 0 :(得分:11)
对于动态生成的元素,您应该委派事件,您可以使用on
方法:
$(function() {
$(document).on('click', '#submitUser', function(e) {
var fname = $("#fname").val();
$("#theresult").text(fname);
e.preventDefault();
});
});
live()
方法为deprecated。
答案 1 :(得分:2)
在黑暗中采取狂野的刺,因为你的问题没有得到很好的描述,但也许你正在尝试使用.click()
等来将事件绑定到动态加载到网页?
如果是这样,您可能希望改为.on()
。
答案 2 :(得分:1)
您需要使用直播活动。
例如,如果您生成的内容包含点击事件,则可以执行以下操作:
$(".something").live("click", function({
// do something
)};
答案 3 :(得分:1)
对于动态生成的字段,使用.on()JQuery方法:
$(document).on('click', '#MyID', function(e) {
e.preventDefault(); // or you can use "return false;"
});