Javascript 用于模拟:以开头或:以结尾搜索文本的jQuery选择器?

Javascript 用于模拟:以开头或:以结尾搜索文本的jQuery选择器?,javascript,jquery,xml,jquery-selectors,contains,Javascript,Jquery,Xml,Jquery Selectors,Contains,如果您查看jQuery网站上的,则有以on属性开头和以on属性结尾的选择器。还有一个:包含用于搜索文本的选择器: alert( $("div").find("span:contains(text)").html() ); jQuery是否有使用start with或end with搜索字符串的实现 仅供参考:我需要搜索XML对象。据我所知,这不是默认情况,但您可以通过$.expr[“:”]添加自己的伪选择器 如果不想扩展jQuery,可以使用filter()函数创建contains功能: $(

如果您查看jQuery网站上的,则有以on属性开头和以on属性结尾的选择器。还有一个
:包含用于搜索文本的
选择器:

alert( $("div").find("span:contains(text)").html() );
jQuery是否有使用start with或end with搜索字符串的实现


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

据我所知,这不是默认情况,但您可以通过
$.expr[“:”]
添加自己的伪选择器


如果不想扩展jQuery,可以使用
filter()
函数创建contains功能:

$("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可能包含大量空白。

噢,哇。非常感谢你。我感谢你的意见。你能详细说明一下你的过程吗?每个函数中“set”和“i”的用途是什么?什么是数据[3]?再次感谢。@user717236:您在
$.expr[“:”]
中设置的函数被传递了几个参数,以决定某个元素是否应该传递
elem
是要测试的元素,
i
是计数器<代码>数据
是包含选择器值的数组<如果选择使用
:以('foo')开头,则代码>数据[3]
将是字符串
“foo”
set
是由函数过滤的所有元素组成的集合,因此,例如,
div:Start with('foo')
将所有
div
传递为
set
,然后由函数过滤。感谢您的解释,@pimvdb。是否有一个我可以查阅的资源可以提供关于这个主题的更深入的讨论?例如,您在每个函数中指定了四个参数。这些变量是否与jQuery的find方法声明(即函数(a){var b=this,c,d;…})相关?@user717236:据我所知,不是直接相关的。它们是jQuery选择器引擎Sizzle的一部分。我找不到关于这个问题的官方文章,但似乎对此作了一些解释。作为旁注,您似乎发布了jQuery的缩小版的函数。可读代码处于“开发”版本。
var expression = new RegExp(text + '$');
$("div").find("span").filter(function () {
    return expression.test($.trim($(this).text()));
});