1

問題は、オプション、つまりデフォルト オプションなしでトグル関数を使用すると、アイテムの「is(':visible')」が正しい状態を返すことです。

ただし、toggle("slow") を使用すると、誤った状態が明らかになり、トグルによって操作された項目が常に false として表示されます。もちろん、アニメーションが完了したことを確認するために、コールバック関数内で確認しています。

以下のコードを見てください

jQuery(document).ready(function () {
    var h3 = jQuery("#myAccordion").find('h3');
    jQuery("#myAccordion").find('h3').find('span').addClass("ui-state-active ui-icon");
    jQuery.each(h3, function () {
        jQuery(this).bind('click', function () {
            jQuery(this).next('div').toggle("slow", "swing", callback);
        });
    });
});

function callback () {
    if (jQuery(this).next('div').is(':visible')) {
        alert('visible--' + jQuery(this).next('div').is(':visible'));
        jQuery(this).find('span').removeClass("ui-state-default ui-icon").addClass("ui-state-active ui-icon");
    }
    else {
        alert('visible--' + jQuery(this).next('div').is(':visible')); // always goes into this 'else' even though the item is visible.
        jQuery(this).find('span').removeClass("ui-state-active ui-icon").addClass("ui-state-default ui-icon");
    }
}

ただし、トグルで「遅い」オプションを使用しない場合、同じことが完全に正常に機能します。

更新 2: ここで確認してくださいhttp://jsfiddle.net/tariquasar/7xt7D/2/

任意のポインター...

更新 1: これはフィドルですhttp://jsfiddle.net/tariquasar/7xt7D/

4

1 に答える 1