在我的程序中,我尝试使用.clone()方法复制一个元素,但是这个方法不会复制元素的样式,所以我必须逐个翻译它们:
var style = {
"position":"absolute",
"color": $(demo[i][1]).css("color"),
"width": $(demo[i][1]).width(),
"height": $(demo[i][1]).height(),
"font-size": $(demo[i][1]).css("font-size"),
"font": $(demo[i][1]).css("font"),
"text-align": $(demo[i][1]).css("text-align"),
"padding-left": $(demo[i][1]).css("padding-left"),
"padding-right": $(demo[i][1]).css("padding-right"),
"padding-top": $(demo[i][1]).css("padding-top"),
"padding-bottom": $(demo[i][1]).css("padding-bottom"),
}
然后使用.css方法来应用这些样式,但是逐个复制这些样式似乎是一个愚蠢的想法。 那么有没有更好的方法复制元素,所以它的样式也被复制,而不是.clone()方法,如果没有,有没有办法自动mapp所有可能的css()结果而不会遇到所有这些麻烦?< / p>
这是我的新方法,还有更好的方法吗?
var styleList = ['background','border','outline','font','list-style','padding','display','float','overflow','visibility',' width','height','border-collapse','border-spacing','caption-side','empty-cells','table-layout','color','direction','letter-spacing' ,'line-height','text-align','text-decoration','text-indent','text-transform','vertical-align','white-space','word-spacing'] < / p>
var style = {'position':'absolute'}
$。each(styleList,function(i,property){ style [property] = original.css(property) });
答案 0 :(得分:3)
这是一个很好的例子,说明为什么你应该直接使用CSS类而不是样式。
如果将所有内容都放入CSS类中,那么您所要做的就是在克隆元素上调用addClass()
方法。我没有对它进行过测试,但是我希望你会发现这个实际上是在克隆元素的时候被复制的,所以你不会发生事件。
回复评论:
您的网站应该与代码分开展示。如果您正在努力使用继承的属性,那么您可能需要查看您网站的设计。将所有演示文稿分成CSS是一种很好的做法。
另外,要检查元素是否有类,请使用hasClass()函数。没有必要拆分属性然后迭代数组,所以,
var classList = $('#divId').attr('class').split(' ');
$.each( classList, function(index, item){
if (item==='someClass') { //do something }
});
变为:
if ($('#divId').hasClass('someClass')){
//do something
}