我有一个变量(div元素),其中包含一些表格html。
我可以使用此javascript为每个具有背景设置的单元格添加一个类。
var tds = tempDiv.getElementsByTagName("TD");
for (var j = 0; j < tds.length; j++) {
var oTd = tds[j];
if (oTd.style.background.length > 0) {
oTd.className = 'faketh';
oTd.setAttribute('style', 'Clear');
} //if
}//for
我想做的是在jquery中做同样的事情。下面是我提出的,第二行工作正常,但第一行没有......
$(tempDiv).find("td[style*='background:']").addClass("faketh");
$(tempDiv).find("td").removeAttr('style');
任何帮助都将不胜感激。
编辑: 只是添加;我正在使用下面的代码而没有问题。
$(tempDiv).find("tr:odd").addClass('row0');
$(tempDiv).find("tr:even").addClass("row1");
所以它不是添加类的问题...问题是我找不到任何匹配的元素。这是td元素之一;
<td valign="top" class="faketd" style="border: 1pt solid windowtext; padding: 0cm 5.4pt; background: silver none repeat scroll 0% 0%; width: 131.4pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;">
<p style="margin: 0cm 0cm 0pt; text-align: justify;"><strong>VPN Name/Description:</strong></p>
</td>
答案 0 :(得分:3)
我认为你不能在jQuery中使用选择器来做到这一点。 style属性不是由浏览器存储为字符串,而是一个对象。
它已经实施,但是:http://code.google.com/p/aost/wiki/CustomJQuerySelectorInTellurium#:styles
或者您可以在this之类的内容中使用$ .each:
$("img").each(function() {
if($(this).css('background').length > 0) {
$(this).addClass('faketh');
}
});
或者您可以使用jQuery过滤器:
var x = $("#tempDiv td").filter(function(i){
return $(this).css("background").length > 0;
});
答案 1 :(得分:2)
试试这个
$(tempDiv).find("td[style*=background]").addClass("faketh");
EDIT 为了防止选择具有某种“背景 - ”的元素,您也可以按照
进行操作$(tempDiv).find("td[style*=background]:not(td[style*=background-])").addClass("faketh");
但如果元素同时具有“background:blabla”和“background-color:#FFF”,则不会选中它
答案 2 :(得分:1)
一些警告:
最重要的一点:
答案 3 :(得分:0)
根据tempDiv的不同,您还可以通过执行以下操作来缩短它:
$(tempDiv + " td[style*=background:]").addClass("faketh");
答案 4 :(得分:0)
您正在搜索字符串'background:',但在您给出的示例中,它使用'background-color:'
因此将其更改为:
$(tempDiv).find("td[style*=background-color:]").addClass("faketh");
或:
$(tempDiv).find("td[style*=background]").addClass("faketh");