查找 id 包含两个子字符串的元素
find elements which id contains two substrings
我有一个 HTML table,我需要将 CSS 样式更改为 <td>
的所有 "id"
包含子字符串 [=13] =] 和子字符串 "_B_V_852"
使用 jquery。子字符串可以位于字符串的任何位置。
我用这个,但没用:
$('id:contains("_A_189"):contains("_B_V_852")').css(style);
可以用方括号来select属性:
$("[id*='_A_189'][id*='_B_V_852']").css(style);
对于这个问题,最好将其缩小到只有 td 元素:
$("td[id*='_A_189'][id*='_B_V_852']").css(style);
"[id*='str']" 表示 "find an element where attribute 'id' contains string 'str' anywhere".
jQuery 文档中的更多信息:
http://api.jquery.com/attribute-contains-selector/
编辑:
这个 selector 在 css 中可用,不仅在 jQuery 中可用,所以如果 '_A_189' 和 '_B_V_852' 部分是静态的,你应该考虑添加它到您的样式表而不是使用脚本。例如:
table td[id*='_A_189'][id*='_B_V_852'] {
/* your styles */
}
如果两个字符串可以“在任何位置”,那么 select 它们的唯一方法,实际上,是 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()
selector 查看元素的文本内容来查找您正在搜索的字符串,而不是 attributes/properties 的元素。
此外,因为没有 .
、#
、:
或其他字符来指示,所以 jQuery 正在寻找 [= 的元素类型17=],而不是查看 id
属性 的所有元素,其文本包含提供给 :contains()
selector 的字符串。
参考文献:
- CSS:
- JavaScript:
- jQuery:
contains 的正确 css 选择器是 [attribute*=substring],因此 jquery:
$('[id*="_A_189"][id*="_B_V_852"]').css(样式);
你可以很简单地做到这一点:
$( "td[id*='_A_189'][id*='_B_V_852']").css(style);
我有一个 HTML table,我需要将 CSS 样式更改为 <td>
的所有 "id"
包含子字符串 [=13] =] 和子字符串 "_B_V_852"
使用 jquery。子字符串可以位于字符串的任何位置。
我用这个,但没用:
$('id:contains("_A_189"):contains("_B_V_852")').css(style);
可以用方括号来select属性:
$("[id*='_A_189'][id*='_B_V_852']").css(style);
对于这个问题,最好将其缩小到只有 td 元素:
$("td[id*='_A_189'][id*='_B_V_852']").css(style);
"[id*='str']" 表示 "find an element where attribute 'id' contains string 'str' anywhere".
jQuery 文档中的更多信息: http://api.jquery.com/attribute-contains-selector/
编辑: 这个 selector 在 css 中可用,不仅在 jQuery 中可用,所以如果 '_A_189' 和 '_B_V_852' 部分是静态的,你应该考虑添加它到您的样式表而不是使用脚本。例如:
table td[id*='_A_189'][id*='_B_V_852'] {
/* your styles */
}
如果两个字符串可以“在任何位置”,那么 select 它们的唯一方法,实际上,是 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()
selector 查看元素的文本内容来查找您正在搜索的字符串,而不是 attributes/properties 的元素。
此外,因为没有 .
、#
、:
或其他字符来指示,所以 jQuery 正在寻找 [= 的元素类型17=],而不是查看 id
属性 的所有元素,其文本包含提供给 :contains()
selector 的字符串。
参考文献:
- CSS:
- JavaScript:
- jQuery:
contains 的正确 css 选择器是 [attribute*=substring],因此 jquery:
$('[id*="_A_189"][id*="_B_V_852"]').css(样式);
你可以很简单地做到这一点:
$( "td[id*='_A_189'][id*='_B_V_852']").css(style);