有人可以告诉我为什么,即使我的警报显示我的正则表达式字符串匹配,if语句也不会被触发?我有以下示例代码。提前谢谢。
$(document).ready(function () {
$('div#primaryNavigation').find('a').each(function () {
var pattern = /my-link1|my-link2|my-link3|my-link4/;
var myWindow = window.location.pathname.match(pattern);
var href = $(this).attr('href').match(pattern);
alert('Show link and href until match: ' + myWindow + ' ' + href);
if (myWindow == href) {
//* Do Something *
};
});
});
答案 0 :(得分:4)
.match()
的返回值不是字符串,而是字符串数组。当数组恰好包含相同的值时,它们不会相等。
尝试
if (myWindow[0] == href[0]) { ... }
也可能还要验证返回值也不为空:
if (myWindow && href && myWindow[0] === href[0]) { ... }
答案 1 :(得分:2)
由于[1,2,3] == [1,2,3]
失败的原因,您的if语句失败。您需要比较每个列表的内容,或者更简单地比较myWindow [0] == href [0]。
答案 2 :(得分:0)
你试过了吗?
var pattern =/(my-link1|my-link2|my-link3|my-link4)/;