这个问题在这里已有答案:
我有一个购物车,在下拉菜单中显示产品选项,如果他们选择“是”,我想让页面上的其他字段可见 .
问题是购物车还包括文本中的价格修饰符,每个产品可能不同 . 以下代码有效:
$(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 回答
您可以在ie和chrome中使用此Polyfill
返回关键字包含在字符串中的次数 .
您可以使用search或match .
str.search( 'Yes' )
将返回匹配的位置,如果未找到则返回-1 .
写这个答案已经很晚了,但无论如何我想要包括它 .
String.prototype
现在有一个方法includes
可以检查子字符串 . 此方法区分大小写 .要检查子字符串,可以采用以下方法:
查看documentation以了解更多信息 .
您可以定义扩展方法并在以后使用它 .
这样你就可以在任何地方使用你的页面:
返回 true .
有关更多扩展帮助方法,请参阅以下帖子 . Javascript helper methods
您还可以检查字符串中是否包含确切的单词 . 例如 . :
用法:
这就是jQuery如何使用hasClass方法 .
像这样:
...或者你可以使用代字号运算符:
这是有效的,因为
indexOf()
如果根本找不到字符串则返回-1
.请注意,这是区分大小写的 .
如果您想要不区分大小写的搜索,可以编写
要么,
ECMAScript 6引入了String.prototype.includes,以前名为
contains
.它可以像这样使用:
它还接受一个可选的第二个参数,它指定开始搜索的位置:
它可以polyfilled使其适用于旧浏览器 .
我知道最好的办法是
str.indexOf(s) !== -1;
http://hayageek.com/javascript-string-contains/我建议采用另一种方式(
str.replace(s1, "") !== str
):其他方式:
在Firefox,Safari 6和Chrome 36上测试
以上都没有为我工作,因为有空格但这就是我所做的
如果您能够使用库,您可能会发现Lo-Dash JS库非常有用 . 在这种情况下,请继续检查
_.contains()
(从v4开始由_.includes()
替换) .(注意Lo-Dash约定是命名库对象_ . 不要忘记在同一页面中检查安装以为项目设置它 . )
在您的情况下,继续使用:
..哪一个你更喜欢 .