如果你看一下jQuery网站上的selectors list,就会有关于属性的开始 - 结束和结束的选择器。还有一个:contains
选择器用于搜索文本:
alert( $("div").find("span:contains(text)").html() );
jQuery是否有使用starts-with或ends-with搜索字符串的实现?
仅供参考:我需要搜索XML对象。
答案 0 :(得分:16)
据我所知,默认情况下不是,但您可以通过$.expr[":"]
添加自己的伪选择器:http://jsfiddle.net/h6KYk/。
$.extend($.expr[":"], {
"starts-with": function(elem, i, data, set) {
var text = $.trim($(elem).text()),
term = data[3];
// first index is 0
return text.indexOf(term) === 0;
},
"ends-with": function(elem, i, data, set) {
var text = $.trim($(elem).text()),
term = data[3];
// last index is last possible
return text.lastIndexOf(term) === text.length - term.length;
}
});
答案 1 :(得分:13)
如果您不想扩展jQuery,可以使用filter()
函数创建包含功能:
$("div").find("span").filter(function () {
return $(this).text().indexOf(text) >= 0;
});
或者使用正则表达式创建一个startsWith函数:
var expression = new RegExp('^' + text);
$("div").find("span").filter(function () {
return expression.test($.trim($(this).text()));
});
endsWith函数非常相似:
var expression = new RegExp(text + '$');
$("div").find("span").filter(function () {
return expression.test($.trim($(this).text()));
});
请注意$.trim()
的使用,因为HTML可以包含很多空格。