Мое регулярное выражение не будет соответствовать условному выражению - PullRequest
2 голосов
/ 18 октября 2010

Может кто-нибудь сказать мне, почему, даже когда мое предупреждение показывает, что строки моего регулярного выражения совпадают, оператор 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 *
        };
    });
});

Ответы [ 3 ]

4 голосов
/ 18 октября 2010

Возвращаемое значение из .match() это не строка, это массив строк.Массивы не сравниваются как равные, если они содержат одинаковые значения.

Попробуйте

if (myWindow[0] == href[0]) { ... }

Вероятно, следует также проверить, что возвращаемые значения не равны нулю:

if (myWindow && href && myWindow[0] === href[0]) { ... }
2 голосов
/ 18 октября 2010

Ваш оператор if терпит неудачу по той же причине [1,2,3] == [1,2,3] терпит неудачу. Вам нужно сравнить содержимое каждого списка, или, проще, сравнить myWindow [0] == href [0].

0 голосов
/ 18 октября 2010

Вы пробовали:

var pattern =/(my-link1|my-link2|my-link3|my-link4)/;
...