javascript - 使用 load() 加载 html 页面后,jQuery 单击事件处理程序不起作用

标签 javascript jquery

您好,我正在根据单击的链接在索引页面上加载多个 html 页面。我对具有相关点击事件处理程序的链接有疑问。似乎在 jQuery 加载 html 文件后,该 html 中的链接没有绑定(bind)到它们的单击事件处理程序。 这是我的代码:

这是其中一个无效链接的 html:

<a href="#" id="NavContactPage" data-sectionId="Skills">skills</a>

这是与之相关的 jquery 代码:

$("nav a , a.first_anchor , a#NavContactPage").click(function(){
    var id = $(this).attr("data-sectionId");
    var link = "load/" + id + ".html";

    $("div#Content").load(link , function(){
        $("section#" + id).fadeIn(); 
        if(id === "Portfolio"){
            $('div.slide').cycle('fade');
        }
        if(id === "Home"){
            $("#jcycleslider").cycle({
                fx: mtransition,
                easing: easing,
                before: onBefore,
                after: onAfter,
                speed: mpace,
                timeout: mnext,
                sync: msync,
                randomizeEffects:0,
                pager:'#jslider_nav'
            })
            $("#jslider_nav a").text("");
        }    
    })      
    return false;
})

我该如何解决这个问题?

最佳答案

$("selector").click(...) 仅将 click 事件的回调注册到您当时对 jQuery 可见的元素做了查询。所以对于新添加的元素,匹配这个选择器,回调将不会被应用。

你要么需要重新注册回调到新添加的元素,要么你需要使用:

$(document).on('click',"nav a , a.first_anchor , a#NavContactPage", ... );

建议使用例如,而不是使用文档作为根目录。您将内容加载到的元素作为根元素,例如$("div#Content").on(....);

关于javascript - 使用 load() 加载 html 页面后,jQuery 单击事件处理程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14339309/

相关文章:

javascript - 如何使用数据创建自定义错误函数

javascript - Bootstrap 中的工具提示在 ajax 之后不起作用

javascript - “跳转”到 translateY 值然后动画回到 0

javascript - 从 Highcharts 点将数据发布到服务器

javascript - 使用 jQuery 根据 URL 将父菜单项和子子菜单项设置为事件状态

javascript - 为什么我的 Web 应用程序在发出几个将项目推送到我的 mongodb 数据库的请求后暂停?

javascript - 如果 $http.get() 导致没有新数据,则使 AngularJS 跳过运行摘要循环

javascript - 当有人进入时提醒文本字段值

php - 无法在服务器上上传文件

javascript - 在下拉列表中添加图像