Оператор If в плагине jQuery

#javascript #jquery #jquery-plugins

#javascript #jquery #jquery-плагины

Вопрос:

У меня есть плагин jQuery с оператором if в нем.

По какой-то странной причине (возможно, это просто я что-то напортачил) он всегда попадает в else часть, даже если URL-адреса совпадают.

 if (opts.startUrl == track.permalink.url) {
  var active = true;
} else {
  alert('|' opts.startUrl '| |' track.permalink_url '|');
  var active = false;
}
  

Проверьте это @ http://dev.upcoming-djs.com

Комментарии:

1. Я бы распечатал, что такое startUrl и permalink.url, например, с помощью console.log. Убедитесь, что они действительно идентичны и в них нет конечного или переднего пробела. Не уверен, что здесь используется принуждение к типу — возможно, вы захотите взглянуть на использование ===

2. @planetjones 1, я тоже думал ===. URL-адреса выглядят аналогично из его примера. Другим вариантом было бы использовать . toString() для каждой части.

3. @planetjones: Они также одинаковы с использованием console.log (проверьте, я загрузил его на сервер). Почему мне нужно смотреть на ===? If == сбой === определенно потерпел бы неудачу.

Ответ №1:

Окружающий код использует track.permalink_url , в то время как if блок вычисляет track.permalink.url (что происходит всегда undefined ), поэтому это условие:

 opts.startUrl == track.permalink.url
  

Всегда вычисляется как false

Обновление: как указывает @brianpeiris, правильным исправлением здесь было бы изменить условие на:

 opts.startUrl == track.permalink_url
  

Комментарии:

1. Другими словами, это просто опечатка! Измените track.permalink.url на track.permalink_url (обратите внимание на подчеркивание).

2. OMFG! Я чувствую себя таким глупым сейчас. 😛 Мне потребовалась бы целая вечность, чтобы увидеть это. Спасибо!

3. @PeeHaa: Нет проблем, иногда все, что вам нужно, это еще одна пара глаз 🙂

4. @brianpeiris: Хорошая мысль, я обновлю свой ответ, чтобы прояснить исправление.

Ответ №2:

Начните печатать оба значения и посмотрите, в чем разница, в противном случае сделайте это

 if (opts.startUrl.toLowerCase() == track.permalink.url.toLowerCase())