我有一个HTML表格,我需要使用jquery将CSS样式更改为<td>
包含子字符串"id"
和子字符串"_A_189"
的所有de "_B_V_852"
。子串可以位于字符串的任何位置。
我使用它,但它不起作用:
$('id:contains("_A_189"):contains("_B_V_852")').css(style);
答案 0 :(得分:3)
如果两个字符串可以在任何位置&#34;,那么实际选择它们的唯一方法就是使用filter()
:
// finds all <td> elements with an 'id', filters that collection:
$('td[id]').filter(function () {
// retains only those elements for which the assessment returns true
// (the strings of both '_A_189' AND
// the string '_B_V_852' must be found within the id property:
return this.id.indexOf('_A_189') > -1 && this.id.indexOf('_B_V_852') > -1;
// the found/retained elements remain in the chain, passed to
// the css() method:
}).css(/* style */);
您最初的尝试:
$('id:contains("_A_189"):contains("_B_V_852")').css(style);
没有用,因为:contains()
选择器查看元素的文本内容以查找您要搜索的字符串,而不是元素的属性/属性
另外,因为没有.
,#
,:
或其他字符来表示其他情况,所以此jQuery正在寻找{{1}的元素类型},而不是查看<id>
属性的所有元素,其文本包含提供给id
选择器的字符串。
参考文献:
答案 1 :(得分:2)
您可以使用方括号按属性选择:
$("[id*='_A_189'][id*='_B_V_852']").css(style);
如果遇到这个问题,最好将其缩小到只有td元素:
$("td[id*='_A_189'][id*='_B_V_852']").css(style);
“[id * ='str']”表示“找到属性'id'包含字符串'str'的元素。”
jQuery文档的更多信息: http://api.jquery.com/attribute-contains-selector/
编辑: 这个选择器在css中可用,不仅在jQuery中,所以如果'_A_189'和'_B_V_852'部分是静态的,你应该考虑将它添加到样式表而不是使用脚本。例如:
table td[id*='_A_189'][id*='_B_V_852'] {
/* your styles */
}
答案 2 :(得分:0)
包含的正确css选择器是[attribute * = substring],所以使用jquery:
$( '[ID * = “_ A_189”] [ID * = “_ B_V_852”]')的CSS(风格);
答案 3 :(得分:0)
你可以很简单地做到:
$( "td[id*='_A_189'][id*='_B_V_852']").css(style);