3

現在、jQuery Masonry プラグインで厄介なバグが発生しています。これが取り引きです: 私は 2 列の FAQ ページを作りたいと思っています。この div 内には、slideToggle イベントをトリガーする h3 タグがあり、非表示の div (div.answer) を展開します。問題は、h3 タグをクリックしてイベントをトリガーすると、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/

誰かが私を助けてくれることを願っています!

編集:誰もこの問題を解決できませんか?:(

4

2 に答える 2

0

別の masonr のようなプラグイン (shapeshift) でも同じ問題がありました。問題は、slideToggle のコールバック イベントがトリガーされるのは、スライド エフェクトの準備が完全に整った後であるということです。各スライドステップで石積みを再初期化する「最中」のイベントはありません(少なくとも見つけていません)。

私が見つけた唯一の解決策は、スライド効果を表示/非表示の切り替えに置き換えることでした。煩わしいボックスのオーバーラップ効果はもう見えなくなり、UX も改善されると思います。

于 2013-05-21T07:44:23.807 に答える