jQuery选择器模拟:starts-with或:ends-with用于搜索文本?

如果你看一下jQuery网站上的选择器列表 ,就会有属性的开始 – 结束和结束的选择器。 还有一个:contains搜索文本的选择器:

 alert( $("div").find("span:contains(text)").html() ); 

jQuery是否有使用starts-with或ends-with搜索字符串的实现?

仅供参考:我需要搜索XML对象。

据我所知,默认情况下不是默认,但您可以通过$.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; } }); 

当您不想扩展jQuery时,可以使用filter()函数来创建包含function:

 $("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可以包含很多空格。