Javascript 为什么Jquery remove()要删除覆盖?

Javascript 为什么Jquery remove()要删除覆盖?,javascript,jquery,html,overlay,Javascript,Jquery,Html,Overlay,我试图创建一个自己的覆盖,因为完全相同的错误发生在覆盖插件。 我想做的是,如果有人单击带有类覆盖的元素,将打开覆盖并在覆盖中加载href属性的内容。当这个覆盖被关闭时,应该使用remove-here删除它,但它不是。相反,如果我打开另一个或甚至相同的覆盖,它会显示后面的旧覆盖。 我怎样才能防止这种情况 // Overlay for editing $(".st_overlay[href]").click(function(e){ var url = $(this).attr('href'); $

我试图创建一个自己的覆盖,因为完全相同的错误发生在覆盖插件。 我想做的是,如果有人单击带有类覆盖的元素,将打开覆盖并在覆盖中加载href属性的内容。当这个覆盖被关闭时,应该使用remove-here删除它,但它不是。相反,如果我打开另一个或甚至相同的覆盖,它会显示后面的旧覆盖。 我怎样才能防止这种情况

// Overlay for editing
$(".st_overlay[href]").click(function(e){
var url = $(this).attr('href');
$("body").append('<div display="none" class="st_modal"><div class="inner"></div><span class="close">x</span></div>');
$(".st_modal .inner").load(url);
$(".st_modal").fadeIn(500);
});

// Overlay functions
$(".st_modal .close").click(function(e){
$(".st_modal").fadeOut(500);
setTimeout( function(){
$(".st_modal").remove();
}, 500);
});

您可以在淡出完成后使用回调函数

$(".st_modal .close").click(function(e){
 $(".st_modal").fadeOut(500, function() {
  $(this).remove();
 });
});

快乐编码:

因为您只附加了一次覆盖关闭回调,但动态注入覆盖,注入后您不附加它们。所以你要么在注射后像这样贴在上面-

// Overlay for editing
$(".st_overlay[href]").click(function(e){
var url = $(this).attr('href');
$("body").append('<div display="none" class="st_modal"><div class="inner"></div><span class="close">x</span></div>');
$(".st_modal .inner").load(url);
$(".st_modal").fadeIn(500, function(){
        // Overlay functions
        $(".st_modal .close").click(function(e){
        $(".st_modal").fadeOut(500);
        setTimeout( function(){
         $(".st_modal").remove();
        }, 500);
      });
    });
});

// Overlay functions
$(".st_modal .close").click(function(e){
$(".st_modal").fadeOut(500);
setTimeout( function(){
$(".st_modal").remove();
}, 500);
});
// Overlay functions
    $('body').delegate(".st_modal .close", 'click', function(e){
    $(".st_modal").fadeOut(500);
    setTimeout( function(){
    $(".st_modal").remove();
    }, 500);
    });