2013-07-10 4 views
2

Главный вопрос: Можно ли использовать условный код JavaScript, а затем использовать некоторый код jQuery?Смешивание Javascript и jQuery?

Вот в настоящее время не работающий пример:

<script> 
//<![CDATA[ 
if (location.pathname == "/SearchResults.asp" 
|| location.pathname.indexOf("-s/") != -1 
|| location.pathname.indexOf("_s/") != -1) 
$('.colors_productname span').css("background-color", "#F7F7F7"); 
//]]> 
</script> 

JavaScript условно была предоставлена ​​моей электронной коммерции платформы (Volusion) целевой только страницы категории (JQuery был мой делать). Я спросил их, будет ли этот код JavaScript работать, учитывая, что мои URL-адреса не включают «/SearchResults.asp» (один из них на самом деле «/Meats-s/3393.htm»), но они заверили меня, что он все равно должен работать.

Второй вопрос: что делают линии «location.pathname.indexOf»?

+15

JQuery ** есть ** JavaScript. –

+2

Второй вопрос - ответ на ваш первый :) –

ответ

4

jQuery и JavaScript не являются отдельными языками. jQuery - это библиотека, написанная в Javascript, поэтому любой действительный оператор jQuery является допустимым выражением JavaScript.

Q2: location.pathname - это путь к URL-адресу после вашего доменного имени.

http://www.google.com/s/goo.html например -> имя пути вернется s/goo.html

Так ваш, если условие пытается выяснить, если эта строка содержит подстроку «-s».

+0

Отлично, спасибо :) Так что СЛЕДУЕТ работать, потому что «/ Meats-s /» имеет «-s /». Однако, я думаю, в качестве последующего вопроса было бы: почему тогда он не работает? Должен ли я публиковать новый вопрос полностью, чтобы я мог предоставить больше кода? – user1925805

0

Вы можете абсолютно смешивать их.

Адрес location.pathname.indexOf ищет текущий URL-адрес для экземпляра «_s /» или «-s /». Если URL-адрес не содержит эти символы (или если он равен «/SearchResults.asp»), выполняется запуск вашего jquery-кода.

0

Вы должны быть в состоянии смешать эти два свободно, будьте осторожны с использованием селекторов JQuery и обычных элементов Javascript dom, хотя они не всегда одинаковы. (т. е. класс, множественные селекторы.)

0

jQuery - это просто объект javascript, который предоставляет полезные методы. Итак, да, вы можете использовать vanilla js и jQuery вместе.

11

Хотя вы можете смешать, важно понять, что jQuery и собственный Javascript относятся к элементам DOM по-разному.

Предположим, у вас есть документ с элементом, как это:

<span id="message_location"><span> 

Чтобы получить этот элемент в регулярном Javascript будет:

var spanElement = document.getElementById("message_location"); 

Однако, с библиотекой JQuery вы будете использовать этот синтаксис :

var $spanElement = $("#message_location"); 

Здесь обязательно имейте в виду, что spanElement и $spanElement являются не такое же. Один из них представляет собой элемент DOM, а другой - массив cum jQuery, который содержит одно значение - элемент span.

Когда вы переходите из библиотеки jQuery и обычного Javascript, очень легко запутаться в отношении того, что вы на самом деле имеете в виду.

(лично в любое время у меня есть ссылки JQuery на элемент DOM, я всегда начинаю имя переменной с $. Он держит мою жизнь просто ...)

+1

Очень информативно, спасибо. – user1925805

+0

Не могли бы вы рассказать мне, что делает этот код? 'var div = document.createElement ('div'); if (className) div.className = className; var $ div = $ (div); return $ div; ' – ArmenB

+2

Лучше задавать новый вопрос как вопрос, чем в комментариях. –