我使用Symfony2创建了一个应用程序,其中有一个根据所选选项动态选择的主菜单,在该选项的内容下以较低的div
打开一个选项卡。内容加载使用jQuery的load()
容器div
。你可以看到下面的图片:JavaScript在DIV中的加载内容中无法正常工作
的第一个问题是,在每个选项卡中加载不能使用初始加载在index.html中的js文件的HTML,正如你在这个example中看到的那样,当我们点击每个标签的内容时,你应该检查一个通知,但什么都不做。
此问题的解决方案已包含在每个HTML代码中以加载相应的脚本,并且它正常工作。但是要这样做,如果两个HTML携带相同的js,当某个事件运行的某个内容作为我们创建的选项卡多次重复时,也就是说,如果我打开两个不同的选项(每个选项都在其自己的选项卡中,相同的js)通过点击相关的第一个事件执行两次,而如果我在第二个事件中只执行一次。简而言之,无论何时使用js的函数,都会重复执行与动态加载选项卡上相同的次数。
而我试过event.preventDefault();
或event.stopPropagation();
并且它不能解决问题。
它是否可以将js包含在HTML的整体结构中两次? (包含在最初的头部,然后是容器格)
你好@nicokiva,我读过事件'.live()'的事件文档,这个事件被'.on()'事件更新了,这是我在代码中使用的事件。问题是,因为html动态加载后无法加载js,我无法使用上面添加的js。我不太清楚添加到第一个'$(function(){});'在你的例子中。我在我的例子中添加了一个事件,但仍然没有工作。对不起,但我是新手,需要解决这个问题。 – Joseph
嗨@nicokiva,我不断寻求信息来解决重复事件的问题,我已经看到,为了在主页上使用添加的js,应该使用以下结构进行事件(委托事件处理):'$( '#parent')。on('click','#child',function(){// Code});或$(document).on('click','#selector',function(){ // Code});'有效地使用这个结构动态添加的html可以识别函数,而不需要再次增加js。但重复事件的问题依然存在。它被重复了很多次,因为html已被动态加载。 – Joseph