有效的jquery代码不起作用 - 父/子问题

时间:2011-07-05 13:38:37

标签: jquery html

http://jsfiddle.net/mjmitche/gq6En/78/

在这个小提琴中,如果将橙色框拖到白色框中,石灰和黑色框会淡出。然而,即使(显然有效的 - 根据JSLint)代码指示它,石灰盒也不会淡入。

1)石灰盒是不是因为它是黑盒子的孩子而淡入,并且父黑盒已经消失了?

2)有没有办法让儿童石灰盒重新出现而不会让父黑盒子可见?

3 个答案:

答案 0 :(得分:2)

1。)是的 - 您可以通过将#black div添加到第二个选择器来测试:

drop: function (event, ui) {
            $(this)
                .addClass ("ui-state-highlight")
                .find ("p")
                .html("dropped");
            $("#lime, #black").fadeOut(1000, function(){ // Only #black needed here
            $("#lime, #black").fadeIn(1000); // Only #black needed here as well
            });

这会让#lime回来(不幸的是,还有黑色)。

2。)我不确定如何攻击这个因为你试图建立的逻辑,但你可能需要将#black属性更改为空(更改类时它是通过使其透明或某种东西隐藏起来并将其淡化,使其外观消失?

答案 1 :(得分:2)

  1. 是的,#blackdisplay: none;继承所有后代 - 其中包括#lime

  2. 是的,如果您将其重新挂在#black元素之外。当它是不可见元素的后代时,永远不会可见。

  3. Demo取代......

    $("#lime").fadeIn(1000);
    

    ...与...

    $("#lime").insertAfter("#black").fadeIn(1000); // Reattach after `#black`. This will manipulate the DOM!
    

    ...为了证明第1点和第2点:)

答案 2 :(得分:1)

我认为你不能在不退缩#black的情况下做到这一点。 但是,您可以在淡入淡出#pink之前将#black的背景更改为none。 我编辑了你的小提琴/

这就是你要找的东西; http://jsfiddle.net/gq6En/93/

相关问题