2011-11-29 18 views
1

我想将高亮和删除效果应用于同一个dom。一个接一个地。不幸的是,高亮效果是不可见的,因为删除后立即触发。jQuery特效组合

任何想法延迟删除操作?

$("#<%= dom_id(@stock) %>").effect("highlight", {}, 4000) 
$("#<%= dom_id(@stock) %>").remove() 

回答

2

问题是,.remove()不能拖延。这是立即触发的功能之一,意味着.delay()什么也不做。

然而,JavaScript的setTimeout()功能:

$('#g').click(function(){ 
$("#hi").hide("highlight", {}, 4000) 
setTimeout('$("#<%= dom_id(@stock) %>").remove();', 4100) 
}); 

这里是一个example of this on jsFiddle

+0

谢谢。我删除了删除操作,并且在你的语法中工作得很好。这就是我所需要的。谢谢 – Gaelle

+0

您的欢迎。很高兴我能帮上忙。 – Shawn31313

1

effect一个jQuery插件?我无法在jQuery站点上找到该函数的任何文档。

使用jQuery Animate是因为您在动画完成后得到回调。

$("#<%= dom_id(@stock) %>").animate({ 
    opacity: 0.25, 
    }, 4000, function() { 
    // Animation complete. 
    $("#<%= dom_id(@stock) %>").remove(); 
    }); 

更新

像Shawn31313说

effect(..) 

是jQuery用户界面的一部分,此功能还支持 “回调” 的作用完成后。 jQuery UI Effect

希望这有助于

+2

影响带有jQuery UI的,我相信。 – Shawn31313

+0

谢谢!我更新了我的答案。 – dknaack

+0

是的,它带有jQuery UI。你的解决方案也可以。 – Gaelle

1

.effect()有回调参数,这将影响完成后调用。见effect demo

$("#<%= dom_id(@stock) %>").effect("highlight", {}, 4000, function() { 
    $("#<%= dom_id(@stock) %>").remove(); 
});