2015-11-03 3 views
0

Навигационная система выглядит ниже. Я хочу добавить элементы меню в массив, и для этих элементов необходимо выполнить определенные действия.Если дочерний элемент элемента содержит определенный текст (найден в массиве)

Я не смог понять, как это сделать, поэтому мне нужна ваша помощь, спасибо!

HTML:

<ul id="mainnav-menu" class="menu"> 
    <li id="menu-item menu-item-1"> 
     <a href="#">Apples</a> 
    </li> 
    <li id="menu-item menu-item-2"> 
     <a href="#">Oranges</a> 
    </li> 
    <li id="menu-item menu-item-3"> 
     <span class="submenu-dropdown-toggle"></span> 
     <a href="#">Green bananas</a> 
    </li> 
    ... 
</ul> 

JQuery:

var performActionsTo = ['Apples', 'Oranges']; 

$('.menu-item').each(function() { 
    if $(this).closest('a').text() == /* exists in array */ { 
     console.log('action'); 
    }; 
}); 
+1

Вы ищете его ??? –

+0

@ A.Wolff: Да, я искал его, но еще не нашел решения. –

ответ

0

Это можно сделать намного проще с помощью JQuery-х contains себе Лектор:

$.each(performActionsTo, function(i, val) { 
    var element = $(".menu-item a:contains('" + val + "')"); 
    // Perform action on element 
}); 

Оговорка:

Этот ответ (как и с другими ответами) может понадобиться дополнительное внимание, если вы решили иметь Apples, а затем Big Apples, как первое будет соответствовать оба элемента, как оба якоря будет «содержать» этот термин.

+0

Работает как очарование. Приятный и элегантный, спасибо! –

+0

@KarlSagar Вы попробовали мой ответ? –

+0

@JohnR: Да, я сделал. К сожалению, по какой-то причине он нашел только один из элементов массива. Спасибо, в любом случае! –

-1

Попробуйте это:

var performActionsTo = ['Apples', 'Oranges']; 
$('.menu-item').each(function() { 
    if (performActionsTo.indexOf($(this).find('a').text()) > -1) { 
     console.log('action'); 
    }; 
}); 

http://www.w3schools.com/jsref/jsref_indexof_array.asp

+0

да..Извините .. Я только что обновил это ... Спасибо. – vijayP