javascript - 如何在动态加载的页面中强制从 js 中点击 html 元素

标签 javascript jquery html css ajax

希望我能想出一个更好的方式来表达这个问题......

使用 JQuery.Ajax 在一个简单的 Web 应用程序中动态加载内容,顶部有一个静态导航栏,下面有一个内容区域。当用户单击导航栏上的按钮时,我使用 ajax 将请求页面的 html 加载到内容 div 中。效果很好。

我正在使用基于 Bootstrap 和其他库的稍微复杂的管理主题来设置应用程序的样式。我将所有的 css 和 js 引用放在父页面中,在子页面中我只使用类而不引用 css 或 js。

当加载 html 子级时,它会根据父级引用的 css 正确呈现,这对我来说很有意义,因为在加载后它实际上是父级页面的一部分,因此它可以访问父级中的所有内容.

我的问题是在 js 文件中定义的点击处理程序没有附加到元素。我可以在 chrome 中使用 F12 确认这一点。但是,如果我在子项中放置对 js 的引用,那么点击处理程序就会连接起来并且工作正常。

我猜它不起作用的原因是当 child 被加载时,没有任何东西告诉“系统”连接 js 文件中定义的事件。

这是子页面中的 html:

<a href="#" class="btn btn-mini content-refresh">
<i class="fa fa-refresh"></i>
</a>

这是在父页面中引用的 js 函数(它是一个什么都不做的虚拟函数):

$(".content-refresh").click(function (e) {
    alert('refresh');
    e.preventDefault();
    var $el = $(this);
    $el.find("i").addClass("icon-spin");
    setTimeout(function () {
        $el.find("i").removeClass("icon-spin");
    }, 2000);
});

如前所述,当我在子项中包含 js 时,它工作得很好,当仅在父项中引用时,所有 css 样式都有效,但点击处理程序无效。

我不知道在 child 中包含 js 是否有缺点,也许这是唯一的解决方案。由于资源已经加载,我假设浏览器不会再次加载它,但是可能有 js 文件,我想在父级中只引用一次它们是可能的。

当我只引用父级上的js文件时,如何在动态加载页面后让点击事件连接起来?

最佳答案

$( selector ).live( events, data, handler );                // jQuery 1.3+
$( document ).delegate( selector, events, data, handler );  // jQuery 1.4.3+
$( document ).on( events, selector, data, handler );        // jQuery 1.7+

现在和将来为元素附加事件处理程序。 你可以使用。

$(document).on("click", ".content-refresh", function (e) {
    alert('refresh');
    e.preventDefault();
    var $el = $(this);
    $el.find("i").addClass("icon-spin");
    setTimeout(function () {
        $el.find("i").removeClass("icon-spin");
    }, 2000);
});

关于javascript - 如何在动态加载的页面中强制从 js 中点击 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38486635/

相关文章:

php - 尝试编写 js 会使整个页面变为空白

javascript - 如何在javascript中获取特定子字符串后的子字符串

javascript - 如何从另一个基于 ajax 的函数获取数据?

javascript - 使用方法参数动态添加和复制元素

javascript - unslider 背景不拉伸(stretch)(包括 fiddle )

javascript - jquery 将如何为移动设备实现触摸事件?

java - netscape.javascript.JSException : SyntaxError: Unexpected keyword 'this' . 预计 ')' 结束参数列表

javascript - 在 Nuxt 中注入(inject)函数

html - 选项卡 Pane ( Bootstrap )在移动/桌面中无法正常工作

html - 如何在着陆页中转换标题