У меня есть следующий код JavaScript:Matching спасся пространства с помощью JavaScript IndexOf
var matchArray = [];
var passedUrl = '/' + url;
var tabLink;
$('.uiAjaxTabs li a').each(function() {
if (passedUrl.indexOf($(this).attr('href')) == 0) {
boverlap_penalty = passedUrl.replace($(this).attr('href'), '').length;
matchArray.push({ 'score': boverlap_penalty, 'dom_obj': this });
}
});
if (matchArray.length) {
tabLink = matchArray.sort(function (a, b) {
return (a.score < b.score) ? -1 : 1
}).shift().dom_obj;
}
$(tabLink).parents('li').addClass('loading');
Который берет passedUrl и затем сопоставляет его с набором ссылок, чтобы увидеть, который наиболее точно соответствует URL, а затем добавляет класс загрузки к нему.
Это работает отлично ИСКЛЮЧАЕТЕ, если ссылка имеет пробел в ней, например. domain.com/People?Name=John Doe
, потому что браузер видит его как domain.com/People?Name=John%20Doe
и, следовательно, не соответствует ему правильно, когда у переданногоUrl есть экранированные пробелы, а ссылка отсутствует.
Любые идеи о том, как исправить это?
URL-адреса не могут иметь пробелы. – SLaks
Просьба предоставить тестовый файл с некоторыми значениями для '$ (this) .attr ('href')', 'url', который вы используете, и ожидаемого результата. – Bergi