0

したがって、サイトで適切に機能するコードがありました。

$("#usr").load("somepage.php",{var1:var1,var2:var2});

しかし、ナビゲーション バーのいくつかのコードを変更して以来、jQuery は非常に奇妙な動作をしています。最初の大きな問題は、次の行でした。

var w = $(window).width();

エラーを返します:object [global] has no method "width()"

ページ上のすべての要素がそのエラーで機能したため (要素がまだ配置されているため、まだ実行されているかのように)、それは問題ではないようでした...しかし、最初の行を実装したページに来ました次のエラーが発生しました。

Cannot call method "load()" of null

案の定、コンソールを確認したところ、$("#usr") は null を返しましたが、インライン ID がusr.

ページが正しく機能するには、そのページからデータをロードする必要があるため、これは問題を引き起こします。しかし、それはさらに奇妙になります。単純な投稿リクエストを試してデータdocument.getElementById("usr").innerHTML = ...を取得し、代わりに使用するだけだと思っていましたが、この行から次のエラーが発生します。

$.post("somepage.php",{var1:var1,var2:var2},function(data){
    document.getElementById("usr").innerHTML = data;
});

エラー:

Uncaught TypeError: Object function $(el){if(!el)return null;if(el.htmlElement)return Garbage.collect(el);if([window,document].contains(el))return el;var type=$type(el);if(type=='string'){el=document.getElementById(el);type=(el)?'element':false}if(type!='element')return null;if(el.htmlElement)return Garbage.collect(el);if(['object','embed'].contains(el.tagName.toLowerCase()))return el;$extend(el,Element.prototype);el.htmlElement=function(){};return Garbage.collect(el)} has no method 'post'

jQuery で一体何が起こっているのでしょうか。

googleapis から 1.8.2 をインポートしています

4

1 に答える 1

9

これは、Prototype、MooTools、または jQuery だけでなく何かをロードしているように聞こえるので、Prototype/MooTools/何でも$シンボルを引き継いでいます。

それが起こっていることであり、他のライブラリが必要な場合は、jQuery.noConflict(). 次に、jQueryjQueryの代わりにシンボルを使用するか、次のように、すべての jQuery コードを、渡して引数として受け入れる関数に入れます。$jQuery.noConflict$

// Out here, $ !== jQuery
jQuery.noConflict(function($) {
    // In here, $ === jQuery
});

または、自分で行うこともできます。

// Out here, $ !== jQuery
jQuery.noConflict();
(function($) {
    // In here, $ === jQuery
})(jQuery);

readyすでに を使用している場合は、jQuery オブジェクトも関数に渡しますready

于 2012-12-04T17:26:02.133 に答える