我有一个购物车,在下拉菜单中显示产品选项,如果他们选择“是”,我想使页面上的一些其他字段可见。
问题是购物车还在文本中包含价格修饰符,每个产品的价格修饰符可能不同。下面的代码工作:
$(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”时执行该操作,并忽略价格修饰符。
ECMAScript 6引入了String.prototype。包含,以前命名为包含。
它可以这样使用:
'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
它还接受一个可选的第二个参数,用于指定开始搜索的位置:
'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
它可以被填充以使其在旧浏览器上工作。
是这样的:
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
ECMAScript 6引入了String.prototype。包含,以前命名为包含。
它可以这样使用:
'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
它还接受一个可选的第二个参数,用于指定开始搜索的位置:
'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
它可以被填充以使其在旧浏览器上工作。
您还可以检查字符串中是否包含确切的单词。例如:
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方法。