如何在jquery动画函数中传递原始显示属性?

时间:2013-02-07 12:59:31

标签: javascript jquery css animation

我会尽可能简单地解释这个问题:

我有两个div

第一个div:<div id="first" style="color:black;"></div>

第二个div:<div id="second" style="color:red;display:inline;"></div>

我希望当我在第一个div上调用slideUp时,它已经隐藏了,把第二个的所有css样式,INCLUDING显示属性(在第一个div中是块,第二个是内联)然后才显示div。

我尝试这样做,但是第二个显示属性丢失了,第一个div的显示属性恢复为阻止,而不是内联。

$("first").slideUp(function(){ 
    $(this).attr("style","display:none;"+$("second").attr("style"));
    $(this).slideDown();
});

虽然怎么办?

对不起我的英语,但我来自保加利亚,真的需要这个,因为这是一个更大项目的重要组成部分。

提前致谢!

3 个答案:

答案 0 :(得分:0)

这就是.slideDown()的工作原理,它将元素显示为块。

$(this).slideDown(function(){
   $(this).css('display','inline');
});

这将使其内联但可能也会破坏动画效果。这取决于

答案 1 :(得分:0)

有两个主要问题。首先,您应该使用jQuery.css来控制div的样式。第二,要按ID选择div,您需要使用CSS“#”符号:

$(this).attr("style", $("#second").attr("style"));
$(this).css("display", "none");

答案 2 :(得分:0)

如何制作第二个元素的副本并替换文本?

$("#first").slideUp(function () {
    var content = $(this).text();
    var copy = $("#second").clone();
    $(copy).html("");
    $(copy).text(content);
    $(copy).attr("id", "first");
    $("#first").replaceWith(copy);
    $("#first").slideDown();
});

http://jsfiddle.net/kmd97/rKejG/19/