2009-12-17 114 views
2

我:jquery從<img>標記中刪除'/'?

<img class="avatar_img" /> 

後:

avatar_img.attr({src: "/site_media/avatars/" + this.userid + ".jpg", title: this.username}); 

我得到:

<img title="admin" src="/site_media/avatars/1.jpg" class="avatar_img"> 

正如你所看到的,斜線 「/」 從標籤的結尾,disappeard。我該如何解決它?這似乎使一些問題,使我的網站......

文檔類型和其他...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
+0

您正在使用哪種doctype? – 2009-12-17 16:48:38

+0

你確定嗎?什麼瀏覽器?什麼文檔類型? – 2009-12-17 16:49:21

+0

你可以將你的'DOCTYPE'聲明添加到你的問題中作爲參考嗎? – 2009-12-17 16:49:54

回答

4

當查看生成的源代碼,這並不一定遵循XHTML標準。瀏覽器在運行時讀取DOM的方式與您在XHTML代碼中看到的方式不同。這實際上如何影響網站的呈現?它不應該有所作爲。

+0

是的你是對的,這不是渲染不好的原因,但是在歌劇看起來不錯...無論如何thx通知+1和接受。 – IProblemFactory 2009-12-17 17:11:50

4

有趣,我只是昨天已經解決了這個問題!

問題是,即使您指定了XHTML文檔類型,如果Content-Type標頭設置正確(如application/xhtml+xml),DOM(至少在FireFox中)將僅遵循XHTML規則。這包括使用JavaScript處理DOM,包括jQuery。作爲一個實驗,考慮下面的代碼:

var foo = $('<div></div>'); 
foo.html('<img src="#" />'); 
console.debug(foo.html()); 

此代碼將有取決於什麼內容類型設置不同的結果。如果Content-Type爲text/html,那麼您將返回<img src="#">,因爲使用plain-ole HTML時,這是正確的。但是,如果Content-Type爲application/xhtml+xml或任何其他可接受的XHTML MIME內容類型,則應返回<img src="#" />

因此,無論您使用哪種服務器端框架,您都需要將該標題添加到響應中。如果它是一個靜態文件,你應該能夠有一個meta標籤做到這一點:

<meta http-equiv="Content-Type" content="application/xhtml+xml" /> 

您可以檢查標題爲使用FireBug Net標籤頁面加載。

我有ASP.NET MVC的額外問題,它不會設置內容類型,即使我特別設置它。訣竅是你需要在之後將其設置爲來查看。所以,這應該工作:

public void ActionResult Index() 
{ 
    var result = this.View(); 
    this.Response.ContentType = "application/xhtml+xml"; 
    return result; 
} 

編輯:我只看見自己的編輯和你與你的meta標籤設置錯誤Content-Type。有關更多詳情,請參閱我的答案的其餘部分。

+0

無論如何,內容類型只能幫助thx。 – IProblemFactory 2009-12-17 17:12:30

1

它取決於瀏覽器生成的內容。 Internet Explorer將主要生成它喜歡的任何內容,通常以大寫形式顯示未封閉的圖像標記。即使它可以正確呈現,如果直接檢查DOM,通常也會如此。

Firefox更有可能按照它所說的去做。但是,在這兩種瀏覽器中,如果您的頁面中某處存在無效的XHTML,則可能會將渲染引擎引入怪癖模式 - 在這種情況下,它將盡最大努力以舊式瀏覽器的方式渲染頁面,幾乎處理你給它的任何標記,並且至少給用戶呈現一些東西。副作用是,您在符合標準的優雅方面的努力可能會被忽略,呈現也不會像您期望的那樣出現。

所以我會先看看頁面的其餘部分,並確保它完全符合XHTML,然後JQuery和DOM應該很好地一起玩。