2012-01-20 9 views
0

Mootools 1.4とjQuery 1.5.1の両方が動作しているページで作業しています。私はこれが理想的ではないことを知っていますが、実際には選択肢がありません。このページはほとんどのブラウザで正常に動作しますが、IE8では正常に動作しません。私は次のエラーを取得する:IE8でのjQuery/Mootoolsの問題

Object doesn't support this property or method

noConflictブロックに私のjQueryの固有のコードを入れにもかかわらず、クリックイベントを追加しよう。問題を再現するフィドルがあります:http://jsfiddle.net/p7rFV/1/

何が起こっているのかお考えになりまして、ありがとうございます。あなたのフィドルと

$.noConflict(); 
    jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 


document.getElementById('button').addEvent('click', function(){ 
    document.getElementById('tester').hide(); 
}); 

答えて

1

2つの問題:あなたが行うと

  1. 、あなたは、jQuery.noConflict();ない使用する必要があります$.noConflict();

  2. IEでのプロトタイプレベルのようでDOM要素を強化することはできません

    MooToolsは他のブラウザでも使えるので、MooTools固有の関数を使用する前に必ず$()またはdocument.id()に渡す必要があります。したがって、この行は失敗します。

    document.getElementById('tester').hide(); 
    

    ... DOM要素は何hideメソッドを持っていないので。代わりに、ちょうど$()またはdocument.id()を使用します。両方の要素を検索します

    $('tester').hide(); 
    document.id('tester').hide(); 
    

    が... それを拡張。

Updated fiddle

+0

Thanks--しかし、jQueryのはjsfiddleパネルの左側にあるリソースの管理]タブを参照してくださいincluded--されます。私は説明を感謝します。私は$()が 'document.id'ではなく' document.getElementById'の短縮形であったという印象を受けました。 – julio

+0

@julio:ああ、良い。申し訳ありません、最初の点を削除しました。 –

+0

あなたはポイント#1--をもう少し説明できますか?私はhttp://api.jquery.com/jQuery.noConflict/のjQueryドキュメントで推奨されている正確なnoConflict構文を使用しました - 私ははっきりしないと認めますそこには見るべきより良い資源がありますか? – julio