これは、私が今まで 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
何か案は?私はこれに非常に不満を感じています。どんな助けや指示も大歓迎です。