替换$ for jQuery - .addClass方法

时间:2011-12-01 14:49:53

标签: javascript jquery

我在尝试修复两个库之间的冲突时遇到了问题,并且在某些部分使用了noConflict但是我一直得到 $ active is null 错误

我专注于服务器端脚本而不是Javascript(也没有时间阅读一些文档)所以非常感谢任何帮助。

这是我的代码:

首先(我只是在这里猜测)jQuery添加了一个稍后将使用的类

jQuery(".paging a:first").addClass("active");

现在,是时候使用那个类了

var triggerID = $active.attr("rel") - 1; //Get number of times to slide

由于代码是针对滑块的,每次到达此行时都会出现错误,所以我的问题是......有什么方法可以删除$并仍在该行中使用jQuery吗?

P.S:我正在使用jQuery 1.6.1分钟和MooTools 1.2虽然我怀疑这是相关的我知道他们有冲突所以可能是这个错误的来源。

4 个答案:

答案 0 :(得分:3)

要通过jQuery中的类选择元素,您需要在jQuery对象中使用CSS样式表示法,在您的示例中为jQuery(".active")。试试这个:

var triggerID = jQuery(".active").attr("rel") - 1; //Get number of times to slide

要使用原始代码,您需要将$active变量指定为包含该元素的jQuery对象,如下所示:

var $active = jQuery(".paging a:first").addClass("active");
var triggerID = $active.attr("rel") - 1; // This will now work, assuming it's in the same scope as the above.

答案 1 :(得分:1)

在这种情况下,$ active与jQuery无关(尽管它可能是一个jQuery变量)。在javascript中,您可以将变量命名为“$ something”而不会出现问题,并且它不会与名为“$”的东西发生冲突,这是另一个变量名。这就像是说你已经删除了对变量“car”的所有引用,但是不明白为什么你会因为缺少“地毯”而抱怨错误。它们是完全独立的,因此您发布的代码不足以查看错误。

<强> [编辑]
如果这在某种程度上听起来很苛刻,那就是我在这个问题上以理解方式制定自己的问题,因为我只是想要教育,而不是暗示这是你应该知道的事情。这是很多人在javascript中做的错误(至少有几个我知道)。

答案 2 :(得分:0)

只需将$替换为jQuery,只要您通常使用$,就可以。{/ p>

所以,而不是典型的:

$('.active').attr('rel')

使用:

jQuery('.active').attr('rel')

答案 3 :(得分:0)

$active是一个javascript变量(他们选择将$放在它前面以帮助他们记住它存储jQuery对象,但行为是相同的。)

因此,$active替换active的每个实例仍应有效。我不知道ifit会解决你的问题。

您应该尝试的另一件事是将代码置于闭包中:

(function($){
    // your code
})(jQuery);

这样,在闭包内部,$将仅引用jQuery