2013-08-26 1 views
1

У меня есть ситуация, когда мне нужно искать несколько «ли» для каждой отдельной строки, и если она соответствует всем условиям, добавьте ссылку только к последней.multiple: contains(), только один append()

Я использую jQuery :contains(), чтобы узнать, есть ли у каждого li определенное слово в нем, и я могу сделать его .append() всем ли на основе нескольких условий, но мне нужно только его добавить к последнему li ,

Как это получить? Я могу получить его, чтобы добавить ко всем с помощью:

$('li#1:contains("x"),li#2:contains("y")').append('z'); 

это дает мне:

xz 
yz 

мне это нужно только дать мне:

x 
yz 
+0

так ... используйте метод '.last()'? или даже '.eq (-1)'? –

+0

У вас есть несколько 'li' с идентификатором '1'? – tymeJV

+1

+1 @KevinB, но также отбрасывайте квалификацию 'li' перед вашими селекторами id. – PlantTheIdea

ответ

0

Вы можете использовать "следующий":

$(document).ready(function(){ 
    var target = $('li#1:contains("x")').next('li#2:contains("y")'); 
    if (target){ 
     target.append('z'); 
    } 
    //$('li#1:contains("x")').next('li#2:contains("y")').last().append('z'); 
}); 

Fiddle: http://jsfiddle.net/vuWuD/3/

EDIT: Обновлен для комментариев.

+0

Мне это нравится, но он не основывает его на« и »квалификации. Если я возьму ваш jsfiddle и сделаю li # 1 «z», он все равно добавится ко второму, хотя и не должен. Как заставить его работать, только если выполнены оба условия. – user2719275

+0

Хорошая точка. Обновлен мой ответ, чтобы вместо этого использовать «следующий». – htxryan

+0

Спасибо. Это великолепно работает. – user2719275