【问题标题】:Losing scope in jQuery AJAX Lightbox在 jQuery AJAX 灯箱中失去作用域
【发布时间】:2015-09-25 14:46:15
【问题描述】:

我的灯箱打开,新内容显示在其中。 但是该脚本似乎没有将事件侦听器添加到生成内容中的链接中。因此,除了新的页面加载之外什么都没有发生。

var lightbox = (function() {
var init = function() {
    $('footer').append("<div id='lightbox'><div id='close'>x</div></div>");     
    $('#close').click(function() {
        $('#lightbox').hide();
        $('#lightbox').children(':not(#close)').remove();
    });
    ajax();
};
var ajax = function() {
    $('.ajax a').add('#lightbox a').click(function(e) {
        e.preventDefault();
        $('#lightbox').children(':not(#close)').remove();
        $.ajax({
            url: $(this).attr('href'), 
            success: function(result) {
                $('#lightbox').fadeIn(300).append(result);
        }});
    });
};
return {
    init:init
}
})();

【问题讨论】:

    标签: javascript jquery ajax wordpress lightbox


    【解决方案1】:

    您实际上并没有调用init,这是您的关闭处理程序绑定的地方。 init 是一个局部变量,它永远不会从你的 IIFE 返回,所以显然它不是从这个函数外部调用的。

    答案是调用init。就目前而言,您的 lightbox 函数除了声明(然后立即丢弃)两个名为 initajax 的变量之外,没有任何事情。

    【讨论】:

    • 抱歉,我忘了在 sn-p 中添加 return { init:init }。但仍然只有.ajax.a 链接在灯箱中打开。灯箱中的链接不会在灯箱中打开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2011-01-08
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多