2012-01-20 42 views
0

我工作同時具有MooTools的1.4和jQuery 1.5.1運行一個頁面上。我知道這並不理想,但我沒有真正的選擇。該頁面在大多數瀏覽器中都能正常工作,但在IE8中無法正常工作。我得到以下錯誤:的jQuery/Mootools的問題在IE8

Object doesn't support this property or method

嘗試,添加一個click事件,儘管把我的jQuery的特定代碼在noConflict塊時。下面是再現問題小提琴: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

兩個與提琴的問題:

  1. 當你這樣做,你應該使用jQuery.noConflict();,不$.noConflict();

  2. MooTools的不能增強在IE原型水平,如DOM元素它可以在其他瀏覽器,所以你必須始終確保通過$()document.id()使用它們MooTools的專用功能前必須要經過他們。所以這條線失敗:

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

    ...因爲DOM元素沒有hide方法。所以,應該使用$()document.id()

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

    ...這都將查找元素擴展它。

Updated fiddle

+0

Thanks--然而,jQuery是被included--看到管理資源標籤到的jsfiddle面板的左側。我讚賞解釋。我的印象是,$()是簡寫'document.getElementById'而不是'document.id' – julio

+0

@julio下:嗯,不錯。對不起,刪除了第一點。 –

+0

你可以解釋一點點#1--我已經在http://api.jquery.com/jQuery.noConflict/使用jQuery文檔中推薦的確切noConflict語法 - 我承認我不清楚就可以了,但是有更好的資源可以看嗎? – julio