0

我制作了动画 jQuery 悬停。但是我在控制台中有错误,脚本不起作用。

HTML

     <div id="formNav" class="sotwFormNav">
        <div class="currWeek"><a href="{parse url="module=sotw&section=view&year={$year}&week={$week}" base="publicWithApp"}">« Głosuj na najlepsze zrzuty</a></div>
        <div class="currWeek"><a id="upload" onclick="sotwUpload(1);" href="#">Wrzuć własny zrzut ekranu »</a></div>
     </div>

jQuery

$.noConflict();
$('#formNav div').hover(function(){
    jQuery(this).stop(true, false).fadeTo('fast', 1);
}, function() {
    jQuery(this).stop(true, false).fadeTo('fast', 0.65);
});

代码(IP.Board 模板): http: //pastebin.com/uM0V99rW

4

3 回答 3

1

一旦你调用$.noConflict(),这个$字符就不再是 jQuery 了(见jQuery.noConflict()),所以你的使用$('#formNav div')不会产生一个 jQuery 对象,因此hover()没有在那里定义。

重点noConflict()是消除与定义 $为全局变量的其他 javascript 库(如 Prototype 和 MooTools)的冲突。如果您不使用另一个定义 的库,$则无需使用noConflict()

因此,要么删除该$.noConflict()行,要么对于使用的每个后续调用$,替换$jQuery

于 2013-09-02T12:55:21.870 回答
0

改变

$('#formNav div').hover(function(){

jQuery('#formNav div').hover(function(){

演示

于 2013-09-02T12:49:39.797 回答
0

正如前面提到的,它的重点jQuery.noConflict()是设置$回它在加载 jQuery 之前的任何值。在很多情况下,这将一事无成,因此尝试使用它来选择元素不会返回任何内容。

一种解决方案是仅jQuery.noConflict()在必要时使用(即,当您加载另一个也$用作快捷方式的 JavaScript 框架时),并将代码中的每个实例替换$jQuery

但是,还有另一种选择,那就是创建一个闭包,其中在其中$引用 jQuery,但仍然引用外部的任何其他内容(可能没有任何内容):

(function($) {
    $('#formNav div').hover(function(){
        jQuery(this).stop(true, false).fadeTo('fast', 1);
    }, function() {
        jQuery(this).stop(true, false).fadeTo('fast', 0.65);
    });
})(jQuery);

这与(大多数)jQuery 插件使用的模式相同,因为它允许$使用快捷方式而jQuery不用担心与其他框架的冲突。

于 2013-09-02T13:29:06.967 回答