Селектор jQuery, который имитирует: start-with or: заканчивает-для поиска текста?
Если вы посмотрите на список селекторов на веб-сайте jQuery, есть селектора для запуска и завершения с атрибутами. Также существует селектор :contains
для поиска текста:
alert( $("div").find("span:contains(text)").html() );
Имеет ли jQuery реализацию для поиска строк с использованием start-with или end-with?
FYI: Мне нужно выполнить поиск через объект XML.
Ответы
Ответ 1
Не по умолчанию, насколько я знаю, но вы можете добавить свои псевдоселектора через $.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;
}
});
Ответ 2
Если вы не хотите расширять 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()));
});
Функция endWith очень похожа:
var expression = new RegExp(text + '$');
$("div").find("span").filter(function () {
return expression.test($.trim($(this).text()));
});
Обратите внимание на использование $.trim()
, потому что HTML может содержать много пробелов.