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

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

$(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”时执行该操作,并忽略价格修饰符。


当前回答

是这样的:

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

...或者你可以使用波浪号操作符:

if (~str.indexOf("Yes"))

这是因为如果根本没有找到字符串,indexOf()将返回-1。

注意,这是区分大小写的。 如果你想要一个不区分大小写的搜索,你可以写

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

Or:

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

后者是正则表达式或正则表达式。

正则表达式分解:

/表示这是正则表达式 Yes表示正则表达式将以正确的顺序找到那些正确的字符 /结束正则表达式 我将正则表达式设置为不区分大小写 .test(str)确定正则表达式是否匹配str 总而言之,这意味着它将查看是否能在变量str中以不区分大小写的确切顺序找到字母y、e和s

其他回答

另一种方法:

var testStr = "This is a test";

if(testStr.contains("test")){
    alert("String Found");
}

**在Firefox, Safari 6和Chrome 36上测试**

你可以使用搜索或匹配。

str.search('Yes')

将返回匹配的位置,如果没有找到则返回-1。

现在写这个答案有点晚了,但我还是想把它写进去。字符串。原型现在有一个方法includes,可以检查子字符串。该方法区分大小写。

var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false

要检查子字符串,可以采用以下方法:

if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
    // mainString contains substringToCheck
}

查看文档了解更多信息。

你可以在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);
    };
}

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

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