DOM 更改后 jQuery 无法处理动态内容

标签 jquery ajax

我有一个有 2 个版本的网络表单。加载页面时,默认版本(我们称之为版本 1)会显示在 div <div id="oAuthPanel"> 内。 .

在这些表单本身(在两个版本中)中,有一对单选按钮,包裹在 <span> 中。用于通过 jQuery + Ajax 切换表单版本的标签。

当用户单击第二个单选按钮(或它周围的 <span> 标记内的任何位置)时,某些 jQuery 会捕获单击并通过 .load() 检索表单的版本 2。 。表单的版本 2 现在应该是 div <div id="oAuthPanel"> 内的内容。如果用户单击第一个单选按钮,jQuery 应再次检索表单的版本 1。

但是,切换并不顺利。加载页面后第一次加载表单的第二个版本(通过单击第二个单选按钮)。但是,如果我先单击该单选按钮。但之后,当我单击第一个单选按钮等时,它不会切换回来。

这是 jsFiddle 来提供代码的想法(但它位于开发盒上,因此 ajax 部分无法工作)。

https://jsfiddle.net/robarwebservices/6xkoy7bz/1/

如何才能使这项工作按预期进行?

最佳答案

问题出在我的 jquery 处理切换的编写方式上。由于表单本身是动态的,我必须像这样更改行:

$('#oaSpanLinkNative').click(function () {

$(document).on('click', '#oaSpanLinkNative', function () {

这里的前两个答案解释了其工作的原因:

Jquery function doesn't work after Ajax call

关于DOM 更改后 jQuery 无法处理动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845776/

相关文章:

jquery - 返回两个对象到Ajax请求

jQuery 失败后回调不显示代码 400 的响应

php - 使用 ajax 或普通表单操作进行有/无 Javascript 表单提交

javascript - ASP.NET 如何知道请求是否为 AJAX?

javascript - 使用 jQuery 和 Javascript 将无序列表拆分为多个 div

javascript - 引用对象内的属性

javascript - 标题中的 jQuery 移动可折叠按钮,停止折叠/展开

javascript - 从列表中选择一些值后,JQuery 自动完成组合框设置初始空格

jquery - 将比视口(viewport)宽的 DIV 居中

javascript - WAMP 上的 PHP 更喜欢相同的随机数组元素?