我有一个购物车,在下拉菜单中显示产品选项,如果他们选择“是”,我想使页面上的一些其他字段可见。

问题是购物车还在文本中包含价格修饰符,每个产品的价格修饰符可能不同。下面的代码工作:

$(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();
        }
    });
});

我只想在所选选项包含单词“Yes”时执行该操作,并忽略价格修饰符。


当前回答

您还可以检查字符串中是否包含确切的单词。例如:

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方法。

其他回答

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

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

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

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

返回true。

有关更多扩展助手方法,请参阅下面的帖子。 Javascript帮助方法

你可以在ie和chrome中使用这个Polyfill

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

includes()方法确定一个字符串是否可以在另一个字符串中找到,根据需要返回true或false。 语法:字符串。包括(searchString [,]) searchString:在该字符串中搜索的字符串。 位置:可选。在这个字符串中的位置开始搜索searchString;默认值为0。

string = 'LOL';
console.log(string.includes('lol')); // returns false 
console.log(string.includes('LOL')); // returns true 

我知道最好的方法是str.indexOf(s) !== -1;http://hayageek.com/javascript-string-contains/

我建议另一种方法(str。Replace (s1, "") !== str):

var str =“你好,世界!”s1 =“ello”,s2 =“elloo”; 警报(str。代表(s1, "") !== str; 警报(str。代表(s2,“”)!

您还可以检查字符串中是否包含确切的单词。例如:

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方法。