2012-03-01 46 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指定。随你。