2015-09-25 88 views
0

我的燈箱打開並且其中顯示新內容。 但該腳本似乎沒有將事件偵聽器添加到生成的內容中的鏈接。因此,除了新的頁面加載外,沒有任何事情發生在jQuery AJAX中丟失範圍燈箱

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 
} 
})(); 

回答

0

其實你不調用init這就是你的親密處理程序的約束。 init是一個永遠不會從你的IIFE返回的局部變量,所以顯然它不是從這個函數外部調用的。

答案是調用init。現在,您的lightbox函數不會什麼除了聲明(然後立即丟棄)名爲initajax兩個變量。

+0

對不起,我忘了在代碼片段中添加'return {init:init}'。但仍然只有'.ajax.a'鏈接在Lightbox中打開。燈箱中的鏈接不會在燈箱中打開。 –