在div之间移动附加对象

时间:2010-12-22 05:13:58

标签: jquery append

我正在使用一个简单的脚本在单击时在两个div之间移动img对象:

$('img').click(function()
{
    if ($(this).parents('#div1'))
    {
        //alert('in gallery');
        $(this).appendTo($('#div2'));
    }
    else if ($(this).parents('#div2'))
    {
        $(this).appendTo($('#div1'));
    }
})  

问题是,一旦将img附加到div2,再次单击img将不会将其移回div1。当我插入一些测试警报时,看起来jquery仍然认为img在div1中。

在浏览器中检查元素会在div2下显示img。

Div2固定在屏幕底部,而div1浮动在页面上。是否有任何我没有考虑到这项工作?

(关于SO的第一篇文章,所以请保持温和,乐意提供更多信息来帮助!)

THX!

1 个答案:

答案 0 :(得分:1)

问题在于:if ($(this).parents('#div1'))

实际上并没有检查img是否在#div1之内,因为即使没有找到任何内容,jQuery也会返回一个对象(包含一个空数组)。由于对象是“真实的”(即{} == true},它将始终进入第一个if块。

更改为:

if ($(this).parents('#div1').length)

检查父项是否存在。