jQuery Masonry在slideToggle事件上重叠div

时间:2012-11-10 03:36:47

标签: jquery html jquery-masonry overlapping expandable

目前我遇到了jQuery Masonry插件的烦人错误。 这是交易:我想做一个两栏的常见问题页面,我用石工浮动div。 在这个div内部是一个h3-Tag,它将触发一个slideToggle事件,并展开一个隐藏的div(div.answer)。问题是,如果我点击h3-tag并触发事件,div.answer会扩展,但会将div重叠几秒钟,直到达到最终正确的位置。

以下是slideToggle事件的脚本: (正如你所看到的,我已经尝试在脚本内的几个位置回忆起砌体功能,但它没有解决问题)

$(document).ready(function() {
            $('.answer').hide();
            $('#container').masonry();
            $('.show').click(function() {
                imgelem = $(this);
                $(this).parent().next().stop().slideToggle("slow", function() {
                    $('#container').masonry('reload');
                    if ($(this).css("display") == "none") {

                        imgelem.attr("src", "images/expand.png");
                    }
                    else {
                        imgelem.attr("src", "images/collapse.png");
                    }
                });
                    $('#container').masonry();
            }); 
            $('#container').masonry('reload');  
        });

您可以在此处查看问题:http://jsfiddle.net/2huZd/3/

我希望有人可以帮助我!

编辑:没有人可以解决这个问题? :(

2 个答案:

答案 0 :(得分:1)

您可以使用step功能上的slideToggle()选项告诉砌体重新计算每一步的位置......但如果您的元素太多,可能需要处理太多信息网格。

答案 1 :(得分:0)

我和另一个类似masonr的插件(shapeshift)有同样的问题。问题是只有在完全准备好幻灯片效果后才会触发slideToggle的回调事件。没有(我没有发现至少)任何“在”期间会在每个幻灯片步骤重新初始化砖石的事件。

我找到的唯一解决方案是用显示/隐藏切换替换幻灯片效果。箱子的烦人重叠效果将不再可见,而且我认为用户体验会更好。