jQuery - 如果仅匹配两个特定单词,则显示 div

Posted

技术标签:

【中文标题】jQuery - 如果仅匹配两个特定单词,则显示 div【英文标题】:jQuery - Display div if it matches only two certain words 【发布时间】:2017-09-08 02:44:23 【问题描述】:

如果我想在标题中出现“Apple iPad”字样时显示 install_option div?

如果产品称为 ipad(小写)或 Ipad,也可以进行匹配

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


<div class="install_option" style="display:none;">              
    <div style="width:35%; box-sizing:border-box; float:left;">
        <h3 style="font-weight:bold;">Would you like to view accessories?</h3>
    </div>

    <div class="apple_install_option" style="padding-top:20px;">
        <a href="https://www.apple.com" target="_blank">
                <img  src="http://cdn.cultofmac.com/wp-content/uploads/2012/10/lightningconnector.jpg" style="margin-right:20px; max-width:200px; height: auto;">
        </a>
    </div>

</div>


$(".install_option").each(function() 
  var brand = $("h1#pbtitle").text().toLowerCase();
  if (brand != "Lenovo") 
    $('.install_option').css('display', 'block');
  
);

https://jsfiddle.net/ote8w56v/

【问题讨论】:

上面显示的 jsfiddle 不起作用。这个可以:jsfiddle.net/54eg8cn6 你可以使用.indexOf,比如this 【参考方案1】:

您可以使用indexOf 来查看字符串是否包含某些单词,如果包含则返回索引,如果不包含则返回-1,因此只需检查它是否不返回-1,如下所示:

$(".install_option").each(function() 
  var brand = $("h1#pbtitle").text().toLowerCase();
  if (brand.indexOf("ipad") != -1) 
    $('.install_option').css('display', 'block');
  
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- 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="width:35%; box-sizing:border-box; float:left;">
    	<h3 style="font-weight:bold;">Would you like to view accessories?</h3>
    </div>

    <div class="apple_install_option" style="padding-top:20px;">
		<a href="https://www.apple.com" target="_blank">
				<img  src="http://cdn.cultofmac.com/wp-content/uploads/2012/10/lightningconnector.jpg" style="margin-right:20px; max-width:200px; height: auto;">
		</a>
	</div>

</div>

【讨论】:

联想、微软、宏碁等一系列关键词如何触发?【参考方案2】:

像这样:

$(".install_option").each(function () 
    var thisElement=$(this);
    var brand = thisElement.find("h1").text().toLowerCase();
    if (/ipad/.test( brand )) 
        thisElement.css('display', 'block');
    
);

【讨论】:

【参考方案3】:

使用indexOf 你可以做到这一点。更多详情请参考Link

$(".install_option").each(function() 
  var brand = $("h1#pbtitle").text().toLowerCase();
  if (brand.indexOf("ipad") != -1) 
    $('.install_option').css('display', 'block');
  
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- 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="width:35%; box-sizing:border-box; float:left;">
    	<h3 style="font-weight:bold;">Would you like to view accessories?</h3>
    </div>

    <div class="apple_install_option" style="padding-top:20px;">
		<a href="https://www.apple.com" target="_blank">
				<img  src="http://cdn.cultofmac.com/wp-content/uploads/2012/10/lightningconnector.jpg" style="margin-right:20px; max-width:200px; height: auto;">
		</a>
	</div>

</div>

【讨论】:

联想、微软、宏碁等一系列关键词如何触发?

以上是关于jQuery - 如果仅匹配两个特定单词,则显示 div的主要内容,如果未能解决你的问题,请参考以下文章

Vue JS - 如果来自两个不同 json 数组的两个字符串匹配,则显示数据

如果 div 包含单词 "example" ,则 addClass 显示 none 到另一个 div

如何仅在标签中的特定单词上显示工具提示?

找到匹配的单词并加下划线-但仅单词

wordpress:如何检查 slug 是不是包含特定单词?

如果前 4 个孩子符合要求,则显示特定文本,使用 Jquery