嗨,我有一个JQuery js,它在AJAX调用后会做这样的事情:
$element.next().after('<td><b>OPTION SAVED</b></td>');
$element.next().next().hide();
$element.next().next().show('slide', {direction : 'left'}, 1000);
现在我想做的是称之为=>
$element.next().next().next().hide("slow");
所以基本上我想动态地创建一个元素,从左边滑动它,在它出现后,我想让它再次慢慢隐藏它。我该怎么做?我的问题是,即使元素还没有完成滑动(或者它的创建?(,js代码也会被执行,所以当我调用hide("slow"(时,它会告诉我在未定义的情况下调用了它,什么都没发生。。。
感谢
$element.next().after('<td><b>OPTION SAVED</b></td>').hide().show('slide', {direction : 'left'}, 1000, function(){$(this).hide();});
如果可行,调用的链接意味着after将返回您刚刚添加的元素,然后显示它并添加回调函数以再次隐藏它。
如果我理解您对问题的描述。你的问题是你有太多的next
s。
$element.next().next().show('slide', {direction : 'left'}, 1000);
请注意,这里有2个next
。
$element.next().next().next().hide("slow");
那么这里有3个next
s。NOT相同的元素。如果要隐藏相同的元素,则从hide
中删除一个next
。
或者更好的是,只需连锁:
$element.next().next()
.show('slide', {direction : 'left'}, 1000)
.hide("slow");
您应该使用回调函数:
$element.show(duration, easing, callback_function);
动画完成后将执行回调函数。
再见!