1

これが私のコードです:

$('#alertInfo').modal({
    close :false,
    overlayId :'confirmModalOverlay',
    containerId :'confirmModalContainer',
    onShow : function(dialog) {
        dialog.data.find('.message').append(message);

        dialog.data.find('.yes').click(function(){
            if ($.isFunction(callback)) callback.apply();
            $.modal.close();
        });

        dialog.data.find('.close').click(function(){
            $.modal.close();
        });  
    }
});

基本的に、これは、「X」ボタン(クラス「閉じる」)と「OK」ボタン(クラス「はい」)を持つ警告メッセージを表示するために呼び出すダイアログボックスです。

この問題はIE7で発生します。このダイアログボックスを呼び出し、「X」ボタンを使用して毎回閉じると、3回目の呼び出しで「X」ボタンが機能しなくなります(3回目はYES!)。ただし、[OK]ボタンを使用してダイアログボックスを閉じると、何度呼び出しても問題なく動作します。

以下のように、(jqueryクリックメソッドを使用する代わりに)「。close」クラスのクリックイベントをバインド解除してバインドすることで回避策を見つけたと思いました。

dialog.data.find('.close').unbind('click');
dialog.data.find('.close').bind('click',function(){$.modal.close();});

そしてそれはうまくいきました!!! 残念ながら、問題は私の「OK」ボタンで発生します。したがって、以下のように、「。yes」クラスのクリックイベントのバインドを解除してバインドしました。

dialog.data.find('.yes').unbind('click');
dialog.data.find('.yes').bind('click',
    function() {
        if ($.isFunction(callback)) callback.apply();
        $.modal.close();
});

しかし、いいえ、それは機能しません..私を助けてください.. @ ericmmartin、私はあなたが今オンラインになっていることを願っています.. huhu ..

新しい観察:クラス「.close」のバインド解除/バインドをクラス「.yes」の前に配置すると、「X」(クラス「.close」を使用)ボタンで問題が発生します。以下のようになります。

$('#alertInfo').modal({
    close :false,
    overlayId :'confirmModalOverlay',
    containerId :'confirmModalContainer',
    onShow : function(dialog) {
        dialog.data.find('.message').append(message);

        dialog.data.find('.close').unbind('click');
        dialog.data.find('.close').bind('click',
            function(){
                $.modal.close();
        });

        dialog.data.find('.yes').unbind('click');
        dialog.data.find('.yes').bind('click',
            function(){
                if ($.isFunction(callback)) callback.apply();
                $.modal.close();
        }); 
    }
});

なぜああなぜ?!

4

1 に答える 1

1

手始めに、「X」には、単に「閉じる」の代わりに「simplemodal-close」のクラスを使用します。SimpleModal は、close 関数をその要素のクリック イベントにバインドします。

次に、アンバインド/バインドを行う必要はありません。以下が機能するはずです。

$('.yes', dialog.data[0]).click(function () {
    if ($.isFunction(callback)) {
        callback.apply();
    }
    $.modal.close();
});

そうでない場合は、コードで何か他のことが起こっている可能性があります...

于 2010-05-28T13:13:53.470 に答える