Javascript Jquery属性选择器
我有一个变量(div元素),它包含一些表html 我可以使用这个javascript向每个具有背景集的单元格添加一个类Javascript Jquery属性选择器,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有一个变量(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
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
任何帮助都将不胜感激
编辑:
只是补充一句;我使用下面的代码没有问题
$(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>
VPN名称/描述:
试试这个
$(tempDiv).find("td[style*=background]").addClass("faketh");
编辑
为了防止选择具有某种“背景”的元素,您还可以执行以下操作
$(tempDiv).find("td[style*=background]:not(td[style*=background-])").addClass("faketh");
但是,如果一个元素同时具有“background:blabla”和“background color:#FFF”,它将不会被选中
$(tempDiv).find("td[style*=background]").addClass("faketh");
编辑
为了防止选择具有某种“背景”的元素,您还可以执行以下操作
$(tempDiv).find("td[style*=background]:not(td[style*=background-])").addClass("faketh");
但是,如果一个元素同时具有“background:blabla”和“background color:#FFF”,它将不会被选中,这取决于tempDiv是什么,您还应该能够通过执行以下操作来缩短它:
$(tempDiv + " td[style*=background:]").addClass("faketh");
根据tempDiv是什么,您还应该能够通过执行以下操作来缩短它:
$(tempDiv + " td[style*=background:]").addClass("faketh");
您正在搜索字符串“background:”,但在您给出的示例中,它使用的是“background color:” 因此,将其更改为:
$(tempDiv).find("td[style*=background-color:]").addClass("faketh");
或:
您正在搜索字符串“background:”,但在您给出的示例中,它使用的是“background color:” 因此,将其更改为:
$(tempDiv).find("td[style*=background-color:]").addClass("faketh");
或:
一些警告:
- 样式选择器的内容应该按照您在问题中的方式被引用(检查中的示例),而不是按照其他人的建议被取消引用
- 在jQuery属性选择器中检查样式属性时要小心。浏览器可能会修改字符串的内容(重新排序、冒号周围的间距等)以实现其内部表示,每个浏览器的做法略有不同
- 您正在使用Firefox吗?我在Firefox中遇到过一两次属性选择器问题,因此如果您只在Firefox中测试过,请检查Chrome/IE/Safari/Opera/等。这不会解决问题,但可能会为您提供不同的范围
- 样式选择器的内容应该按照您在问题中的方式被引用(检查中的示例),而不是按照其他人的建议被取消引用
- 在jQuery属性选择器中检查样式属性时要小心。浏览器可能会修改字符串的内容(重新排序、冒号周围的间距等)以实现其内部表示,每个浏览器的做法略有不同
- 您正在使用Firefox吗?我在Firefox中遇到过一两次属性选择器问题,因此如果您只在Firefox中测试过,请检查Chrome/IE/Safari/Opera/等。这不会解决问题,但可能会为您提供不同的范围
- 一些警告:
var x = $("#tempDiv td").filter(function(i){
return $(this).css("background").length > 0;
});
我不认为在jQuery中使用选择器就可以做到这一点。浏览器不会将“样式”属性存储为字符串,它是一个对象 然而,它已经实施: 或者,您也可以使用$。每种形式,例如: 或者您可以使用jQuery过滤器:
var x = $("#tempDiv td").filter(function(i){
return $(this).css("background").length > 0;
});
您知道背景设置为什么或只是查找任何值吗?您知道背景设置为什么或只是查找任何值吗?请仔细检查。。。否。删除单引号没有任何区别:(不会删除:意味着我现在将匹配背景色等属性。我只是在背景属性之后。删除冒号并…不。:(太奇怪了,它不起作用…我看对了。请仔细检查…不。删除单引号没有任何区别。:)(不会删除:表示我现在将匹配属性,如背景色等。我只是在背景属性之后。删除冒号并…不:)(奇怪的是,它不起作用……在我看来是对的。你说得很对,我的示例td html元素不正确。我已经修改了它。一些td元素确实有背景颜色属性,我不在乎。我只想在背景上匹配。你说得很对,我的示例td html元素不正确。我修改了它。一些td元素确实有一个背景颜色属性,我不在乎。我只想在背景上匹配。还没有测试过这个…但这是这里的最佳答案…希望能起作用;)还没有测试过这个…但这是这里的最佳答案…希望能起作用;)