2011-08-22 91 views
0

我有以下的jquery在IE 8能正常工作:jQuery選擇在IE 7兼容模式不工作

var myVar = $(myField).parent().parent().find("a#hyp"); 
$(myVar).text("Notified!"); 

然而,當我把我的瀏覽器模式,IE7或IE8兼容模式這是行不通的。我相當肯定它是選擇器(「a#hyp」)的問題,因爲我之前碰到過類似的問題,那就是jquery沒有捕獲到錨點標記的click事件。

錨標籤是一個簡單的:

<a id="hyp" href="#">Notify</a> 

在這個任何想法?

+0

爲了完整性你能顯示HTML嗎? – alex

+0

它不應該導致這個問題,但選擇器中的'a'應該是不必要的,因爲應該只有一個具有給定ID的元素。如果沒有'a',它應該更快。另外,'myVar'已經是一個jquery對象,所以不需要在第二行重新包裝它。 –

+0

@kingjiv如果此腳本在多個頁面上運行,並且在不同頁面上具有多個具有「id」屬性的元素,則使用「a」非常重要。罕見而不是最好的做法,但有時候是這樣。 – alex

回答

2

我想大概猜測你可能有多個鏈接與id="hyp",這就是爲什麼你使用$(myField).parent().parent().find("a#hyp");。您的頁面中不能有多個具有給定ID的對象,如果您使用不同的瀏覽器,則會得到不一致的結果。在任何情況下,由於所有的ID必須是唯一的,你的代碼改成這樣(有沒有必要選擇的任何其他資格):

$("#hyp").text("Notified!"); 

內部jQuery中,這將變成一個document.getElementById("hyp")應該很好地工作在所有瀏覽器中。

+0

你是對的。此頁面上有多個具有相同ID的定位標記。然而,這是令人沮喪的,因爲我沒有太多的控制權。這個特定的代碼是.NET,我擁有的是一個GridView的ItemTemplate中的錨標籤。當GridView呈現給瀏覽器時,它會在每一行中放置一個具有相同ID的錨標籤。你讓我想到,也許我應該使用.NET超鏈接,然後每個行的ID都會有所不同。這可能只是解決了我的問題。 – Jagd

+0

問題出在你的建議:具有相同ID的錨標籤。我通過使用asp.net超鏈接來修復它,然後使用不同的ID來呈現錨標籤。當然,這迫使我稍微改變我的jquery選擇器,但最終它發揮得很好。 – Jagd