0

トリガーがクリックされると右からスライドインおよびスライドアウトする動的に生成されたパネルがあります。

HTMLは次のとおりです。

<div id="panel_wrapper">
    <div class="trigger">
        <a id="trigger"></a>
    </div>
    <div id="panel" class="right">
        <div id="panel_nav">
        </div>
    </div>
</div>

jQuery は次のとおりです。

$(div).delegate('#trigger', 'click', function() {
    $('#panel').toggle('fast');
});

記録として、これは Firefox で完全に機能します。美しくスライドします。ただし、Chrome や Safari では期待どおりに動作しません (IE ではまだテストしていません)。Chrome または Safari でテストすると、 1回だけ正常に開閉します。その後、機能しなくなります。これがキッカーです。期間間隔を渡さない場合 | 文字列をトグル機能に追加すると、問題なく動作します。$('#panel').toggle();

最初の反応は、スライド インとスライド アウトの他の方法を試すことかもしれません。それらはすべて、一度は正しく機能し、その後機能しなくなるという同じ副作用を引き起こします。いったい何が問題なのか、何か手がかりはありますか?

詳細が必要な場合はお知らせください。お早めにどうぞ!

4

2 に答える 2

4

これはあなたが探しているものですか: jsFiddle example .

jQuery

$('div.trigger').on('click', '#trigger', function() {
    $('#panel').toggle('fast');
});​

また、jQuery 1.7 の時点で、.delegate()は.on()メソッドに取って代わられました。

于 2012-06-20T19:38:40.560 に答える
0

これはあなたの (動作していない)

$(div).delegate('#trigger', 'click', function() {
    $('#panel').toggle('fast');
});

これは私のものです(作業中)

$('div.trigger').delegate('#trigger', 'click', function(e){
    $('#panel').toggle('fast');
});

デモ。

より良い:

$('div.trigger').on('click', '#trigger', function(e) {
    $('#panel').toggle('fast');
});​

理由: 2 つの div があり、'delegate' のために両方の div が委任されたため、指定せずにイベントが 2 回発生しましたが、使用してdiv.classname解決しました。デバッグのためにこれを確認してください。

于 2012-06-20T19:38:24.213 に答える