它有点晚了,如果我犯了一个愚蠢的错误,请原谅我。出于某种原因,以下代码:
$(".myClass").each(function(){
widths[$(this).attr("id")] = $(this).width();
if ($(this).attr("id") != $(clickedExpand).attr("id"))
{
$(this).animate({
width: '10px'
});
}
});
数组初始化为
var widths = new Array();
在代码的前面。出于某种原因,尽管我在动画开始之前记录了宽度,但我在数组中获得了动画后的值。似乎动画结束了,然后值被记录下来。我试图将它从函数中取出并将其包装在另一个 .each 中,但我得到了相同的结果。
任何帮助将不胜感激!
整个代码:
var slateWidths = {};
$(".slateExpand").click(function(){
var clickedExpand = $(this).closest(".slate");
$(".slate").each(function(){
slateWidths[$(this).attr("id")] = $(this).outerWidth();
if ($(this).attr("id") != $(clickedExpand).attr("id"))
{
$(this).animate({
width: '10px'
});
$(this).find($('.slateExpand')).hide();
}
});
$(this).text("Restore");
$(this).removeClass("slateExpand").addClass("slateRestore");
$(".slateRestore").on("click",function(){
$(".slate").each(function()
{
alert(slateWidths[$(this).attr("id")]);
//var width = slateWidths[$(this).attr("id")];
$(this).animate({
width: slateWidths[$(this).attr("id")]
});
});
});
});