3

主要问题:是否可以使用 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 代码是否仍然可以工作,因为我的网址不包含“/SearchResults.asp”(其中一个实际上是“/Meats-s/3393.htm”),但他们向我保证它应该仍然可以工作。

第二个问题:“location.pathname.indexOf”行有什么作用?

4

5 回答 5

12

虽然您可以混合使用,但重要的是要了解 jQuery 和原生 Javascript 以不同的方式引用 DOM 元素。

假设您有一个包含如下元素的文档:

<span id="message_location"><span>

在常规 Javascript 中获取该元素将是:

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

但是,使用 jQuery 库,您将使用以下语法:

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

这里你必须意识到spanElement$spanElement不是一回事。一个是 DOM 元素,另一个是数组和 jQuery 对象,它保存一个值—— span 元素。

当从 jQuery 库和常规 Javascript 来回切换时,很容易对您真正指的是什么感到困惑。

(就个人而言,任何时候我有一个对 DOM 元素的 jQuery 引用,我总是以 . 开头的变量名$。它让我的生活变得简单......)

于 2013-07-10T23:08:46.780 回答
6

jQuery 和 JavaScript 不是独立的语言。jQuery 是用 Javascript 编写的库,因此任何有效的 jQuery 语句都是有效的 JavaScript 语句。

Q2: location.pathname是你的域名后url的路径。

例如http://www.google.com/s/goo.html -> 路径名将返回 s/goo.html

所以你的 if 条件试图找出这个字符串是否包含子字符串“-s”。

于 2013-07-10T23:04:35.697 回答
0

你完全可以混合它们。

location.pathname.indexOf 正在当前 URL 中搜索“_s/”或“-s/”的实例。如果 URL 不包含这些字符(或者如果它等于“/SearchResults.asp”),则运行您的 jquery 代码。

于 2013-07-10T23:03:06.707 回答
0

您应该能够自由地混合使用这两者,但要小心使用 JQuery 选择器与常规 Javascript dom 元素,但两者并不总是相同的。(即类,多个选择器。)

于 2013-07-10T23:03:16.973 回答
0

jQuery 只是一个提供有用方法的 javascript 对象。所以是的,你可以一起使用 vanilla js 和 jQuery。

于 2013-07-10T23:04:16.960 回答