我正在使用一个简单的脚本在单击时在两个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!
答案 0 :(得分:1)
问题在于:if ($(this).parents('#div1'))
实际上并没有检查img
是否在#div1
之内,因为即使没有找到任何内容,jQuery也会返回一个对象(包含一个空数组)。由于对象是“真实的”(即{} == true
},它将始终进入第一个if
块。
更改为:
if ($(this).parents('#div1').length)
检查父项是否存在。