我遇到了jquery函数的问题,这里是代码:
$(".productUlContainer li.item_thumb").click(function(event){
event.preventDefault();
var actual = this;
//find the 5th element
thisLi = $(this).index() + 1;
thisLink = $(this).find(".bridalLink");
nLi = parseInt(thisLi/5 + 1);
nLi*=5;
$(".productUlContainer li:nth-child(5n)").html("");
$(".productUlContainer li:nth-child("+nLi+")").html( $("#html-results > div").html() );
//Data set
var thisLinkTitle = thisLink.attr("title");
var thisLinkPrice = thisLink.find(".item_price").data("price");
var thisLinkImgPath = thisLink.find(".promo").attr("src");
//Manage open/close effect
if ( previous != actual )
{
$(".productUlContainer li:nth-child("+nLi+")").hide(3000, function(){
/* Fill big box with clicked product details... */
$(".productUlContainer li:nth-child("+nLi+")").find($(".itemName")).text( thisLinkTitle );
$(".productUlContainer li:nth-child("+nLi+")").find($(".price")).text( thisLinkPrice );
$(".productUlContainer li:nth-child("+nLi+")").find($(".imgCollectionBridal")).attr("src", thisLinkImgPath );
$(".productUlContainer li:nth-child("+nLi+")").show(3000, function(){
previous=actual;
});
});
}
else
{
$(".productUlContainer li:nth-child("+nLi+")").hide(3000, function(){
previous=false;
});
}
});
代码结构的一部分非常复杂并且不是由我制作的,最终结果应该与显示放大图像和点击缩略图信息的div相关。 正如您所看到的,该函数会尝试隐藏最终已打开的div,并且它应该使用新单击的缩略图更改其内容。
在我看来,将hide()的这3行INSIDE回调函数放在隐藏序列完成后才会改变内容,但事实并非如此。在运行期间,单击将开始隐藏序列,但是只是立即开始更改,而不是在隐藏完成后...
你能告诉我为什么吗? 谢谢