0

アプリケーションの 1 つで jQuery UI を使用すると、奇妙なエラーが発生します。ダイアログを開くには、一般的な関数を使用します。 OpenDialog()

コードは次のとおりです。

function OpenDialog(href,parameters,width,botoes,dialog_name,dialog_id,modal,onOpen,onClose) 
{
    load("start");
    _id = dialog_id+'_'+Date.now();

    $.post(href,parameters, function(data){
        $(data).dialog({
            title               :   dialog_name,
            draggable           :   (modal) ? false : true,
            modal               :   modal,
            resizable           :   (modal) ? false : true,
            dialogClass         :   'dialog',
            width               :   width+'px',
            close               :   function(event,ui){
                                        if (typeof onClose !== 'undefined' && onClose !== false) { onClose(); }
                                        $(this).dialog("destroy").remove();                                                 
                                    },
            open                :   function(event,ui) {
                                        $(this).attr("id",_id);
                                        _id='#'+_id;
                                        if (typeof onOpen !== 'undefined' && onOpen !== false) { onOpen(_id); }
                                        execMaskOntoThis(_id);
                                        load("end");
                                    },
            buttons             :   botoes
        });
    });
}

そのため、新しいダイアログを作成すると、そのための一意の ID が生成されます。私の問題は、いくつかのボタンに変数 _id を使用すると、何かが台無しになり、最後に開いたダイアログに「イベント」が表示されることです。

私は何か間違ったことをしていますか?関数を使用してダイアログ内で一意の値を制御する方法についてのヒントはありますか?

4

1 に答える 1

0

これを試して:

function OpenDialog(href,parameters,width,botoes,dialog_name,dialog_id,modal,onOpen,onClose) 
{
    load("start");
    var _id = dialog_id+'_'+Date.now(); // _id is now part of the local scope of OpenDialog

    $.post(href,parameters, function(data){
        $(data).dialog({
            title               :   dialog_name,
            draggable           :   (modal) ? false : true,
            modal               :   modal,
            resizable           :   (modal) ? false : true,
            dialogClass         :   'dialog',
            width               :   width+'px',
            close               :   function(event,ui){
                                        if (typeof onClose !== 'undefined' && onClose !== false) { onClose(); }
                                        $(this).dialog("destroy").remove();                                                 
                                    },
            open                :   function(event,ui) {
                                        $(this).attr("id",_id);
                                        _id='#'+_id;
                                        if (typeof onOpen !== 'undefined' && onOpen !== false) { onOpen(_id); }
                                        execMaskOntoThis(_id);
                                        load("end");
                                    },
            buttons             :   botoes
        });
    });
}
于 2012-11-14T18:51:06.730 に答える