jQuery поиск текста в элементах как SQL-запрос НРАВИТСЯ? - PullRequest
3 голосов
/ 27 сентября 2011

Привет, есть ли в любом случае для поиска текста в DOM, как мы делаем для SQL-запроса LIKE?

Я имею в виду, у меня есть.

<ul>
<li>ab</li>
<li>abrecot</li>
<li>abus</li>
<li>aby</li>
<li>abrea</li>
</ul>

Я хотел бы найти «abre» и вернуться в текстовом порядке ASC:

<li>abrea</li>
<li>abrecot</li>

возможно ли это?

определенно запрос будет выглядеть так:

SELECT <li> FROM <ul> WHERE text LIKE 'abre%' ORDER BY text ASC; :))

Ответы [ 3 ]

6 голосов
/ 27 сентября 2011

Поскольку вы ищете элементы, текст которых начинается с указанной строки, вы можете использовать метод filter:

var x = $("ul li").filter(function() {
    return $(this).text().substr(0, 4) === "abre";
});

Это вернет только те элементы, которые имеют строку «abre» в начале. Другие ответы, использующие метод contains, вернут элементы с найденной в них строкой, которая не соответствует вашему псевдо-SQL-запросу.

Вот рабочий пример из вышеперечисленного.

5 голосов
/ 27 сентября 2011

Я думаю, что вы хотели бы, чтобы jQuery содержала функцию, посмотрите документы здесь:

http://api.jquery.com/contains-selector/

Ваш пример, вероятно, будет выглядеть так:

$("li:contains('abre')")

ПРАВКА, чтобы включить комментарии здесь. Если вы ищете «начинается с», вы можете сделать это для элемента, используя следующий синтаксис:

$('li[anAttribute^="abre"]')

Но это предполагает, что у вас есть атрибутна запрос, который я не думаю, что вы делаете, и в этом случае ответ фильтров, скорее всего, лучше всего соответствует вашим потребностям.

4 голосов
/ 27 сентября 2011

Селектор :contains(), вероятно, то, что вы ищете:

http://api.jquery.com/contains-selector/

Цитата:

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>

<div>John Resig</div>

<div>George Martin</div>
<div>Malcom John Sinclair</div>
<div>J. Ohn</div>


<script>
$("div:contains('John')").css("text-decoration", "underline");
</script>

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...