查找id包含两个子字符串的元素

时间:2015-03-06 12:15:47

标签: javascript jquery substring contains

我有一个HTML表格,我需要使用jquery将CSS样式更改为<td>包含子字符串"id"和子字符串"_A_189"的所有de "_B_V_852"。子串可以位于字符串的任何位置。

我使用它,但它不起作用:

$('id:contains("_A_189"):contains("_B_V_852")').css(style);

4 个答案:

答案 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);