如何检查字符串中是否包含子串?

1153

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

问题是购物车中的文本还包括价格调整器,每个产品的价格调整器可能不同。以下代码可行:

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

如果所选的选项包含单词“是”,我只想执行该操作,并忽略价格修改器。


13
将你的选择器从 $('select[id="Engraving"]') 更改为 $('#Engraving'),这样会更快。在 change 处理程序内部,this 指的是 #Engraving 元素,因此您可以使用 $(this).find('option:selected') - user113716
那么:contains选择器怎么样? - Oliver Ni
3
这与jQuery有什么关系?这是一个纯粹的JavaScript问题。 - user182669
12个回答

0

以上的方法都对我没用,因为有空格,但这是我所做的

tr = table.getElementsByTagName("tr");

    for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[0];
        bottab.style.display="none";
        bottab2.style.display="none";
        if (td) {
        var getvar=td.outerText.replace(/\s+/, "") ;

            if (getvar==filter){
                tr[i].style.display = "";
            }else{
                tr[i].style.display = "none";
            }

        }
    }

0

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

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

这样你就可以在页面的任何位置使用:

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

该函数返回true

请参考下面的帖子获取更多扩展辅助方法。 Javascript 辅助方法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接