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