Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改Jquery中事件的顺序_Javascript_Jquery - Fatal编程技术网

Javascript 更改Jquery中事件的顺序

Javascript 更改Jquery中事件的顺序,javascript,jquery,Javascript,Jquery,因此,我创建了一些弹出代码,其中包含在弹出窗口中单击的每个链接的特定信息。关闭时,弹出div中的内容将被删除。这是我的密码: var $content = $('#popupcontent'); var $window = $('#popupwindow'); $('.open').click(function(){ //alert('runnning'); var a = $(this).contents('span'); $content.append(a);

因此,我创建了一些弹出代码,其中包含在弹出窗口中单击的每个链接的特定信息。关闭时,弹出div中的内容将被删除。这是我的密码:

var $content = $('#popupcontent');
var $window = $('#popupwindow');
$('.open').click(function(){
    //alert('runnning');
    var a = $(this).contents('span');
    $content.append(a);
    $window.fadeIn(300);
});
$('.close').click(function(){
    //alert('running');
    var a = $content.contents('span');
    $window.fadeOut(300);
    $('#popupcontent span').remove();
});

我的问题是,它在淡出之前以某种方式删除了内容,这样观众就可以看到弹出式容器变为空白。我怎样才能使它一定会首先淡出,然后删除内容?下面是一个Jsfiddle来说明:

您可能希望利用fadeout方法的complete callback参数,在fadeout完成后删除元素。使用当前代码,它将启动淡出动画,然后立即删除内容,而无需等待淡出动画完成,因此您可以获得现在看到的视觉效果。使用回调可以确保在动画完成后执行回调

$window.fadeOut(300, function () {
        $('#popupcontent span').remove();
    });
.fadeOut[持续时间][完成]


在淡出结束后,可以使用“动画完成”删除元素

以下代码将确保popupcontent仅在淡出后才被删除

$window.fadeOut('slow', function() {
    $('#popupcontent span').remove();
  });
只需使用setTimeout

$window.fadeOut(300);
setTimeout(function(){
    $('#popupcontent span').remove();},2000);

当您可以使用回调实现相同的设置超时时,是否需要设置超时?不,不需要,但是知道所有的多种方法总是很好的。但是,如果OP想要更改淡出的持续时间,他不需要更改超时的间隔吗。我肯定不是说你的代码错了,只是指出了需要做的额外更改。没错,没错……但除非他淡出时间超过4秒(我怀疑他是这样),否则这不是一个问题……但你是对的:第二种做事方式,加上一个例子,确实值得+1,: