4

これは、私が今まで jQuery で遭遇した中で最も厄介で奇妙な問題です。それはとてつもなく基本的です(マーフィーの法則のバグの1つ)

私はdiv(divDialog)を持っています:

    <div id="divDialog">
    </div>

ダイアログ関数を呼び出します。

    $('#divDialog').dialog();

firebugで次のエラーが表示されます:

    this.element[0].nodetitle is undefined

divを削除すると、エラーが消えます。セレクター部分だけをコンソールに表示すると、firebug でノードが表示され、すべてがうまく表示されます。現在、次の方法で jquery を拡張しています。

$.fn.isAfter = function(sel){ //returns true if element is after, else return false, for animations
    return this.prevAll(sel).length > 0;
}
$.fn.isBefore= function(sel){ //returns true if element is before, else return false, for animations
    return this.nextAll(sel).length > 0;
}
$.fn.exists = function(){ //returns true if element exists, false if not
    return this.length>0;
}
$.fn.btnClick = function(fn){ //check if the element is disabled before executing onclick
    $(this).click(function(){
        if($(this).attr('disabled')!='disabled'){
            fn(this);
        }
    });
    return $(this);
}
$.fn.btnToggle = function(){ //toggle disable/enable
    if($(this).attr('disabled')=='disabled'){
        $(this).removeAttr('disabled');
    }
    else{
        $(this).attr('disabled','disabled');
    }
    return $(this);
}

Array プロトタイプも拡張しています。

    Array.prototype.isArray = true; //this allows us to say if(variable.isArray) to detect arrays

何か案は?私はこれに非常に不満を感じています。どんな助けや指示も大歓迎です。

4

1 に答える 1

1

問題は明らかに、jQuery、jQuery UI、またはそれらの組み合わせのバージョンの問題でした。jQuery 1.7.1 と jQuery UI 1.8.1 を使用していました。Google の AJAX ライブラリを使用すると、問題は解消されました。Nodetitle は UI lib 内でのみ発生するため、大きな問題はそこにあると想定しています。すべての jQuery 開発者に、UI とバニラの間のある種のパッケージ コントロールを提案します。UI が常に適切なバニラ パッケージと一致するように、AJAX 呼び出しを使用して UI をブラウザーに移植できますか? とにかく、解決しました。

于 2012-10-16T20:55:51.850 に答える