如果元素的子元素包含某些文本(在数组中找到)

问题描述:

导航系统如下所示。我想要做的是将菜单项添加到数组中,并且对于那些项目应该执行某些操作。如果元素的子元素包含某些文本(在数组中找到)

我一直无法弄清楚如何做到这一点,因此我需要你的帮助,谢谢!

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:是的,我已经搜索过它,但还没有找到解决方案。 –

它可以使用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:是的,我做到了。不幸的是,它只是由于某种原因才在数组中找到其中的一个元素。不管怎么说,还是要谢谢你! –

试试这个:

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