2012-03-01 32 views
1

我試圖替換下面的代碼的CSS樣式:jQuery的更換從HTML()字符串

var theHTML = this.html(); 
theHTML.replace("style=\"display:none;\"", "style=\"display:inline;\""); 
alert(theHTML); 

的HTML如下:

<IMG SRC="picturesFromServer.asp?PhotoId=365481" style="display:none;"> 

然而,一旦我請檢查它改變了或不改變它保持不顯示而是內聯。我只是試圖在打印之前將其顯示出來。

+0

*爲什麼* HTML首先有'style =「display:none;」'? – 2012-03-01 04:11:23

+0

@Madmartigan:從用戶隱藏圖像。然後打印出來。提示這就是爲什麼我想在它打印之前顯示它。 – StealthRT 2012-03-01 04:20:34

回答

1

編輯:如果你正在嘗試做到的是,讓img標籤內this並追加在別處,與display:none;做到這一點。

http://jsfiddle.net/tL3Uf/

HTML

​<div id="mainContainer"> 
    <img src="http://imgh.us/business-online.jpg" style="display:none;" /> </div> 

​<div id="destination"></div>​​​​​​​​​​​​​​​​​​ 

的Javascript

​$(function(){ 
    var $img = $("#mainContainer img").clone(); 
    $img.show(0).appendTo('#destination'); 
});​ 

CSS

#incase image doesnt load 

img{ 
    padding: 10px; 
    background: #f00;   
}​ 
+0

這是一個不好的解決方案,先做一個字符串替換。 – 2012-03-01 04:14:20

+0

沒有工作,我害怕。 B. VB的建議**雖然工作**,但在打印出來時沒有顯示圖像。 – StealthRT 2012-03-01 04:19:53

+0

@StealthRT我編輯了我的答案。它現在有效。檢查小提琴 – blackpla9ue 2012-03-01 05:02:45

6

你可以使用jQuery的.css()方法:

$("img").css("display","inline"); 
+0

含義this.html().css(「display」,「inline」);? – StealthRT 2012-03-01 04:12:16

+1

@StealthRT this =>'$(「img」)'將選擇所有圖片標籤。你可以給你圖像標籤一些id,可以說' gideon 2012-03-01 04:14:10

1

我真的不是一個jQuery的高手,但在Javascript是字符串不可變?如果你嘗試類似

theHtml = theHtml.replace(...) 
+0

這工作,但是當我打印出來它沒有圖像,所以它仍然隱藏:o( – StealthRT 2012-03-01 04:19:00

0

這一行取代指定代碼的前兩行:

$(this).find("img").css("display","inline"); 
+0

該html包含圖像標籤,並且您想要更改該標籤的顯示...我建議去。 css()而不是字符串替換 – 2012-03-01 04:36:47

+0

我同意這是最好的方式來完成顯示圖像,利用jQuery擅長的。 – ndp 2012-03-01 06:01:48

0

字符串.replace() method不更新你怎麼稱呼它的字符串,它返回一個新字符串 - 這就是爲什麼你的alert(theHTML)繼續顯示原始字符串。如果您這樣說:

theHTML = theHTML.replace("style=\"display:none;\"", "style=\"display:inline;\"") 

然後alert(theHTML)會顯示替換的版本。

但是,這仍然不會對實際的img元素產生任何影響,因爲它仍然只是對沒有連接到元素的字符串變量的操縱。實際上使img元素可見你必須從你的字符串產生一個新的元素,這是一個麻煩來取代它,或者你可以設置display屬性直接:

$(this).css("display", "inline"); 

還請注意,您的原始代碼說this.html() - this似乎不太可能是一個jQuery對象,您可以調用jQuery .html()方法,它更可能是DOM元素本身,在這種情況下,您需要說$(this).html()。因此,如果任何答案不起作用,它可能與您如何首先獲得對img元素的引用this有關 - 如果您可以更新您的問題以顯示該問題,可能會有所幫助。

還要注意的是,如果這裏的想法是出現在打印輸出img元素而不是其他,你可以做到這一點與CSS:

@media all { 
    img.printOnly { display: none; } 
} 
@media print { 
    img.printOnly { display: inline; } 
} 

帶來的「printOnly」類(或其他類名你想使用)到任何應該出現僅用於打印的元素。或者用id指定。隨你。