Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Получить элемент с указанным содержимым (https://javascript.ru/forum/events/48507-poluchit-ehlement-s-ukazannym-soderzhimym.html)

cevut 06.07.2014 21:25

Получить элемент с указанным содержимым
 
Всем доброго времени суток. Гугл мне не помог, поэтому настало время верить в людей. У меня на странице есть список (ul>li), некоторые li в него добавляются средствами шаблонизатора, а некоторые с помощью jquey в следствии каких-то событий. Подскажите, пожалуйста, как мне получить li с указанным содержимым, например
<li>getme</li>

Я понимаю что можно просто пройтись в цикле по всем элементам li нужного ul и сравнивать их содержимое, но мне кажется что это не самое хорошее решение и у jquery должно быть что-то посимпатичнее. Было бы хорошо получить элемент в таком виде, чтобы можно было исправить его содержимое.

krasovsky 07.07.2014 08:19

у jq есть метод filter() аргумент которого является функцией фильтрующей как душе угодно. Что по сути тот же цикл просто все "несимпатичности" скрыты под капотом и несколько удобнее чем простой цикл.

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

cevut 07.07.2014 14:23

krasovsky,
да, так и сделаю - добавлю id.
я вчера пробовал что-то c find() и filter(), но ничего нужного не получилось. Не могли бы вы показать как с этим всем работать в моем случае?

рони 07.07.2014 17:50

Цитата:

Сообщение от cevut
как мне получить li с указанным содержимым

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

krasovsky 08.07.2014 12:59

Цитата:

Сообщение от cevut
я вчера пробовал что-то c find() и filter(), но ничего нужного не получилось. Не могли бы вы показать как с этим всем работать в моем случае?

find ищет dom элементы а не текст.
$('li').filter(function(){
if($(this).text() == 'sometext') {//фильтруем  по тексту
return $(this);
}
if($(this).hasClass('someclass')) {// фильтруем  по классу
return $(this);
}

if($(this).prev()[0].id == 'someid') {// фильтруем  по id предыдущего элемента
return $(this);
}
})


Часовой пояс GMT +3, время: 14:51.