2011-05-13 51 views
0

我對這個問題感到困惑,這個問題似乎在我啓動IE 9開發者工具後就開始了。我在Visual Studio 08中開發(因爲頁面是ASP.net ap的一部分),並且在所有其他瀏覽器中工作的所有突然簡單的Jquery選擇器都不能在IE中工作 - 無論是在VS內部瀏覽器(IE7)或獨立的IE 9中。Visual Studio告訴我,一個Jquery插件(Scrollpane或Preload,取決於哪個被首先調用)是「未定義的」。我沒有得到其他錯誤。jquery代碼將無法在IE中工作

我已經刪除了插件和對它們的引用。我還刪除了預加載期間阻止點擊的疊加層。這對IE沒有任何影響。

這是,無論我怎麼明確使它不會在IE中運行的代碼行:

$('#pictureholder > div.display > img[src|="' + image + '"]').parent('div.display').removeClass('noshow').addClass('nowshow').fadeIn('slow'); 

這將運行在有或沒有明確的父母選擇其他的瀏覽器。

+0

你嘗試擺脫你的直系後代選擇器? – Jason

+0

什麼商店在圖像=? –

+0

那裏有很多問題。 「什麼是圖像?」是最緊迫的。你真的有一個'id''圖片處理器'的元素,它帶有一個* immediate *子元素,它是一個'div',其類別是「display」,它的* immediate *子元素是'img',其中'src'包含'image' (不管那是什麼)...... div.display真的是隱藏的。你是否已經把它分解成它的組成部分,然後在調試器中走過去,看看哪個部分不起作用。等等 –

回答

0

似乎有一個<img>的屬性選擇器的錯誤。

Sizzle在不支持querySelectorAll()elem [attr]的UA中使用,它返回image-src的翻譯路徑。所以選擇器不匹配。 我認爲這是一個真正的錯誤,因爲它不是CSS規範中定義的行爲。

您可以使用過濾器()代替:

$('#pictureholder > div.display > img') 
.filter(function(){return $(this).attr('src').match(new RegExp('^('+image+'|'+image+'-.*)$'));}) 
    .parent('div.display')//continue the chain here 

或更改滋滋聲的行爲。要做到這一點,插入右側嵌入的jquery.js後,下面的指令:

jQuery.find.selectors.attrHandle.src= function(elem) 
{ 
    return elem.getAttribute("src",2); 
} 

(這將迫使灒與屬性工作的文件,而不是該元素的屬性中定義)

+0

I我沒有使用Sizzle,但感謝幫助我理解發生了什麼,IE不認識「src」:var h = $('img [src | =''+ image +'「''')。attr('id '); 警報(h); – JaneH

+0

對不起,繼續。我給了一些圖像id來測試。 IE警報「未定義」,而所有其他瀏覽器返回該ID。我將嘗試搜索圖像作爲文本節點...或將其包含在div或span ...或其他內容中。 – JaneH

+0

Sizzle是jQuery的一部分。 –