javascript - 如果str包含子字符串如何查看?

  显示原文与译文双语对照的内容

我有一个在下拉菜单中显示产品选项的shoppingcart,并且我希望在页面上的其他字段只有在上一个选项中选择"是是"时才可见。 问题是购物车也包含了文本中的价格修饰符,而且对于每个产品都可能是不同的。 所以如果我这样做的话,它就会运行:


 $(document).ready(function() {
 $('select[id="Engraving"]').change(function() {
 var str = $('select[id="Engraving"] option:selected').text(); 
 if (str =="Yes (+ $6.95)") {
 $('.engraving').show();
 } else {
 $('.engraving').hide();
 }
 });
 });

但是我更愿意使用这样的东西:


 $(document).ready(function() {
 $('select[id="Engraving"]').change(function() {
 var str = $('select[id="Engraving"] option:selected').text(); 
 if (str *="Yes") {
 $('.engraving').show();
 } else {
 $('.engraving').hide();
 }
 });
 });

哪一个不工作。

如果选中的选项包含单词"是是",并且忽略价格修饰符,我只想执行这里操作。

我欣赏任何帮助。

时间:

就像这个:


if (str.indexOf("Yes")> = 0)

注意这是 case-sensitive 。
如果你想要case-insensitive搜索,你可以编写


if (str.toLowerCase().indexOf("yes")> = 0)

或者


if (/yes/i.test(str))

你可以使用搜索或者匹配。

str.search( 'Yes' )

将返回匹配的位置,如果未找到则返回 -1.

在你可以使用这里 Polyfill IE 和


if (!('contains' in String.prototype)) {
 String.prototype.contains = function (str, startIndex) {
"use strict";
 return -1!== String.prototype.indexOf.call(this, str, startIndex);
 };
}

你可以定义一个扩展方法并在以后使用它。


String.prototype.contains = function(it) 
{ 
 return this.indexOf(it)!= -1; 
};

这样你就可以在任何地方使用:


var str="hello how are you";
str.contains("are");

它返回了英镑。

有关更多扩展 helper 方法,请参考以下文章。 Javascript helper 方法

你也可以检查字符串中是否包含确切的单词。 比如:


function containsWord(haystack, needle) {
 return ("" + haystack +"").indexOf("" + needle +"")!== -1;
}

使用方法:


containsWord("red green blue","red");//true
containsWord("red green blue","green");//true
containsWord("red green blue","blue");//true
containsWord("red green blue","yellow");//false

这就是jQuery的hasClass方法。

...