Javascript 是否有一种方法可以异步重新显示具有原始CSS格式的元素?
比如说,Javascript 是否有一种方法可以异步重新显示具有原始CSS格式的元素?,javascript,html,css,Javascript,Html,Css,比如说, <html> <body> <img id="pic" src="original.jpg"/> </body> </html> 现在,有没有一种方法可以将#pic的src重置为original.jpg,而不显式地将其设置为$(“#pic”).attr(“src”,“original.jpg”)?否,由于您已经更改了DOM,因此无法在不重新分配它的情况下进行重置 但如果使用附加类,则可以使用.removeClass重置该类
<html>
<body>
<img id="pic" src="original.jpg"/>
</body>
</html>
现在,有没有一种方法可以将
#pic
的src重置为original.jpg
,而不显式地将其设置为$(“#pic”).attr(“src”,“original.jpg”)代码>?否,由于您已经更改了DOM,因此无法在不重新分配它的情况下进行重置
但如果使用附加类,则可以使用.removeClass重置该类
现在,有没有办法重置照片
src到original.jpg,不显式
设置为
我认为没有,您是在DOM中完成所有操作的,您无法撤消更改。但是,可以在脚本顶部使用具有原始默认值的变量,并使用这些变量将元素重置为原始值。例如:
<script>
var orig_image = 'original.jpg'; // top level variable
$(function(){
$("#pic").attr("src","newpic.jpg");
});
// later on you show the original one
$('selector').click(function(){
$("#pic").attr("src",orig_image);
});
</script>
您可以先获取所有样式,然后执行任意操作,然后获取所有样式,然后比较两个数组。以下是一些让您开始学习的内容:
所有样式的数组:
var allStyles = ["azimuth","background" ,"backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderBottom","borderBottomColor","borderBottomStyle","borderBottomWidth","borderCollapse","borderColor","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth","borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop","borderTopColor","borderTopStyle","borderTopWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cssFloat","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginBottom","marginLeft","marginRight","marginTop","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingBottom","paddingLeft","paddingRight","paddingTop","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"];
下面是一个jQuery循环,它在与另一个的值进行比较后吐出值(在我的例子中,$other是另一个dom元素,但代码可能非常相似。您需要稍微编辑一下:
// Now we loop through each property, and report those defined
$.each(allStyles, function(key, value){
if ($this.css(value) !== undefined){
if (($other.css(value) !== undefined) && ($this.css(value) !== $other.css(value))){
$("#jsStylesA").append("<li><span class='property'>"+value+"</span>: <span class='value'>"+$this.css(value)+"</span></li>");
}
else {
$("#jsStylesB").append("<li><span class='property'>"+value+"</span>: <span class='value'>"+$this.css(value)+"</span></li>");
}
}
});
//现在我们循环遍历每个属性,并报告已定义的属性
$.each(所有样式、函数(键、值){
if($this.css(值)!==未定义){
if($other.css(value)!==未定义)&($this.css(value)!==$other.css(value))){
$(“#jstylesa”).append(“”+value+”:“+$this.css(value)+“ ”);
}
否则{
$(“#jsStylesB”)。追加(“”+value+”:“+$this.css(value)+” ”);
}
}
});
你觉得你能从这里拿走吗?也许是这样的吧
$.extend({
tempcss: function(prop, val) {
var props = $(this).data('tempcss') || [];
props.push([prop, $(this).css(prop)]);
$(this).css(prop, val);
},
revertcss: function() {
var props = $(this).data('tempcss') || [];
props.each(function(i, prop) {
$(this).css(prop[0], prop[1]);
});
}
});
它会有一些边缘情况,很明显,您的原始示例不是css属性。但是。另一种方法是像这样使用$.data
$(function() {
$('body').data('original_image', $('#pic').attr('src'));
$('#pic').attr('src', 'test.jpg');
});
要还原原始数据,请读取数据:
$('#pic').attr('src', $('body').data('original_image'));
很可能是最好的解决方案。rofl。在确定问题的真正要点方面做得很好。
$(function() {
$('body').data('original_image', $('#pic').attr('src'));
$('#pic').attr('src', 'test.jpg');
});
$('#pic').attr('src', $('body').data('original_image'));