javascript或jQuery在动态生成的内容中不起作用

早上的人。 如何使我的javascript或jquery在动态生成的内容中工作。

基本上,我创建了基于用户点击导航菜单的内容生成内容的网页。

我面临的问题:

  1. 当主页面从内容页面生成内容时,jquery或javascript将无法正常工作。
  2. 但是当我单独打开内容页面时,一切正常。

通过搜索收集的信息:

jQuery.load()方法忽略与动态生成的内容一起提供的脚本标记。

所以我尝试以下方法:

  1. 将我需要的标记放在主页面中,而不是放在内容页面中。 它不起作用。 看起来像jquery找不到内容元素,因为它们是动态生成的。
  2. 由于jQuery.load()忽略了脚本标记,我尝试了纯粹的javascript ajax,就像w3schools.com教导xmlhttp方式一样,来生成内容。 它不起作用。
  3. 单击按钮时。 控制台没有响应。

示例 contact.php

 $(function() { $("#submitUser").click(function(e) { var fname = $("#fname").val(); $("#theresult").text(fname); e.preventDefault(); }); }); 

当这个contact.php动态生成到其他页面时,它不起作用。 当我单击“提交”按钮时,控制台显示无响应。 好像jquery不存在。
但是当我在浏览器中单独打开它时,它可以工作。

对于动态生成的元素,您应该委派事件,您可以使用on方法:

 $(function() { $(document).on('click', '#submitUser', function(e) { var fname = $("#fname").val(); $("#theresult").text(fname); e.preventDefault(); }); }); 

不推荐使用 live()方法。

因为你的问题没有很好地描述,所以你可以尝试使用.click()等将事件绑定到动态加载到页面中的事物,在黑暗中进行狂野的刺杀。

如果是这样,你可能想要查看.on()

你需要使用直播活动。

例如,如果生成的内容包含click事件,则可以执行以下操作:

 $(".something").live("click", function({ // do something )}; 

对于动态生成的字段,使用.on()JQuery方法:

 $(document).on('click', '#MyID', function(e) { e.preventDefault(); // or you can use "return false;" });