在jQuery中使用contains()匹配多个关键字

时间:2017-04-13 10:02:07

标签: javascript jquery contains

目前使用contains()匹配特定关键字。如何将其展开以包含多个关键字? 尝试过使用|| (或)操作员,但没有快乐。

<!-- Product names include Apple iPad, Acer Iconia, Lenovo Thinkpad -->

<h1 id="pbtitle">Apple iPad 3</h1>


<div class="install_option" style="display:none;">              
        <div style="box-sizing:border-box; float:left;">
            <a href="https://www.exmaple.com/acc" target="_blank">
                <h3 style="font-weight:bold;">Would you like to view accessories?</h3>
            </a>    
        </div>

</div>


$(".install_option").each(function() {
    if($("h1#pbtitle:contains:contains('Acer' || 'Lenovo' || Apple )").length>0){
      $('.install_option').css('display','block');
    }
});

3 个答案:

答案 0 :(得分:0)

这样做

if($("h1#pbtitle:contains('Acer'),h1#pbtitle:contains('Lenovo'),h1#pbtitle:contains('Apple')").length>0)

答案 1 :(得分:0)

使用JavaScript函数indexOf()
工作示例jsfiddle

var options = ['Acer','Lenovo','Apple']; // options that you want to look for
var text = $("#pbtitle").text();         // string where you want to look in

options.forEach( function( element ) {
    if ( text.indexOf( element ) != -1 ) {    // if its NOT -1 (-1 = not found)
      alert( 'found' );                       // then we found it .. do your magic
    }
})

答案 2 :(得分:0)

冒险有点不在问题范围内,我猜产品清单是同类动态的。 在这种情况下,最好将属性添加到产品标签中,如:

<h1 id="pbtitle" has_install_option="true">Apple iPad 3</h1>

var condition = $('h1#pbtitle').attr('has_install_option') == 'true';

并在循环中检查该条件。 [想想你将拥有带有install_option的Apple产品或Appleseed产品的那一天......]

在这个例子中,最好将条件放在循环的一边,因为条件相对于循环元素是静态的