让所有 JavaScript 在 ajax 内容上正常工作



我正在研究一个普通的引导主题,其中包含js滑块,弹出窗口,文本旋转,砖石框等。

该主题包含所有相关的 js 库和主库.js

所有这些都将通过 ajax 在用户指定的操作上加载新内容。

以下是用于文本旋转的 js/ajax: 在下面的示例中,我必须调用"$('.text-rotation'(.owlCarousel"以使文本旋转正常工作。

函数 getCon(type,id( { var postData = { id: id, type: type} $.ajax({ 网址 : '获取内容.php', 类型 : "帖子", 数据 : 后数据,                成功 : 函数( resp ( { var cont = $('#cont', resp(.html((; $('#conta'(.after(续(; $('.text-rotation'(.owlCarousel({ 循环:真, 点:假, 导航:假, 边距: 10, 项目: 1, 自动播放:真, 自动播放悬停:假, 自动播放超时:3800, 动画输出:"缩小", 动画输入:"放大" }); }               }); }

当不调用"$('.text-rotation'(.owlCarousel"时,它只是以列表格式显示文本。

为了使所有 ajax 加载内容在所有部分(即滑块、弹出窗口等(上正常工作,我必须找到相关的主题函数并在各自的 ajax 函数上对它们进行编码。

是否有任何预定义的 js 代码我可以在 ajaxComplete 上调用,以便所有 ajax 内容在页面加载时正常工作?

我试图从 ajax 内部的"getScript"函数调用 main.js 成功但不起作用。

简短的回答是:不。

jQuery代码作用于代码运行时存在的DOM;如果你稍后添加到DOM,jQuery代码没有任何通用方法可以返回并处理新元素,就好像它们首先存在一样。

您的选择是

  1. 重写代码,使其不依赖于事件绑定/基于 AJAX 的内容的操作 - 而是对始终存在的元素使用委托事件绑定
  2. 将主代码 init 推迟到所有 AJAX 调用完成之后,因此当您添加绑定时,DOM 已经就位
  3. 编写特定的代码来添加必要的事件绑定/在加载时单独修改新添加的 DOM 块

最新更新