【问题标题】:help combining jquery functions in one file帮助将 jquery 函数合并到一个文件中
【发布时间】:2009-07-17 15:10:28
【问题描述】:

我正在尝试在一个 js 文件中组合几个函数。我对 jquery 很陌生,现在我已经让函数在单独的文件上工作,在不同的页面上被调用(在 drupal 上工作),但是字符串太小了,我认为最好将它们全部组合在一起script.js 文件。

以下是函数:

$(document).ready(function() {
    switches = $('#na-paises-list > li');
    slides = $('#na-paises-images > div');
    switches.each(function(idx) {
            this.slide = slides[idx];
        }).click(function(){$(this).addClass('selected'); $(this.slide).unbind();}).hoverIntent(paisesOver,paisesOut);
});

function paisesOver(){ $(this).addClass('active'); $(this.slide).fadeIn(); }
function paisesOut(){ switches.removeClass('active'); slides.fadeOut('fast'); }

(这个是我在堆栈溢出here上找到的,稍微改了一下,可能是我犯了一个错误……)

第二个:

$(document).ready(function() {
    $("#na-areas-actividade div").tabs({ fx: { opacity: 'toggle', duration: 'fast' }, cookie: { expires: 30 } });
});

第三个:

$(document).ready(function() {
    $("#agencias div").tabs({ fx: { opacity: 'toggle', duration: 'fast' }, cookie: { expires: 30 } });
});

每当我尝试将第二个或第三个功能与第一个功能结合起来时,就会出现问题,并且只有其中一个起作用。我将函数放在文档就绪函数中,如下所示:

$(document).ready(function() {
    switches = $('#na-paises-list > li');
    slides = $('#na-paises-images > div');
    switches.each(function(idx) {
            this.slide = slides[idx];
        }).click(function(){$(this).addClass('selected'); $(this.slide).unbind();}).hoverIntent(paisesOver,paisesOut);

$("#na-areas-actividade div").tabs({ fx: { opacity: 'toggle', duration: 'fast' }, cookie: { expires: 30 } });

$("#agencias div").tabs({ fx: { opacity: 'toggle', duration: 'fast' }, cookie: { expires: 30 } });

});

function paisesOver(){ $(this).addClass('active'); $(this.slide).fadeIn(); }
function paisesOut(){ switches.removeClass('active'); slides.fadeOut('fast'); }

非常欢迎任何帮助或指向正确方向以获取有关此问题的更多信息。

【问题讨论】:

  • 你能提供一个在线演示页面的链接吗?
  • 我认为您所做的修改可能存在一些错误。你能发布一个 HTML 示例吗?
  • 另外,您需要解释您希望这些 sn-ps 代码为您做什么。预期的结果是什么?
  • 该站点仅在 localhost 环境中运行,因此没有演示... 第一个代码块的预期结果是显示/隐藏包含图像的 div,从而为菜单选择设置动画。其他代码块只是使用 jqueryUI 选项卡插件来选择内容,但它们被用于不同的页面,女巫将我带到了 Sixgear anwser 的评论......

标签: jquery function


【解决方案1】:

我设法让您的代码在未修改的情况下(几乎)正常工作。几件事。

  1. hoverIntent 不是 jQuery 方法或事件处理程序。我把它改成了hover
  2. 如果您想使用选项卡小部件上的 cookie 选项,请确保链接到 jQuery cookie 插件。我不想去找插件,所以我只是删除了该选项。

$(document).ready(function() {

    switches = $('#na-paises-list > li');
    slides = $('#na-paises-images > div');

    switches.each(function(idx) {
        this.slide = slides[idx];
    }).click(function(){
        $(this).addClass('selected'); 
        $(this.slide).unbind();
    }).hover(paisesOver,paisesOut); 

    $("#na-areas-actividade div").tabs({ 
        fx: { 
            opacity: 'toggle', 
            duration: 'fast' 
        }});

    $("#agencias div").tabs({
        fx: {
            opacity: 'toggle', 
            duration: 'fast' 
        }});    
});

function paisesOver() { 
    $(this).addClass('active');
    $(this.slide).fadeIn();
}

function paisesOut() { 
    switches.removeClass('active'); 
    slides.fadeOut('fast'); 
}

【讨论】:

  • 作者可以使用一个 hoverIntent 插件。 cherne.net/brian/resources/jquery.hoverIntent.html
  • 啊,这更有意义。那么,我很难过,除非提问者没有链接到所需的插件。 (cookie 和 hoverIntent)
  • 这最后一条评论触发了我的 AHAH 时刻。 hoverIntent 和 cookie 插件仅被添加到需要它们的页面中。所以代码实际上是好的,但我猜在解析时它不知道当它到达 .hoverIntent 并且插件没有加载到该特定页面上时该做什么,从而破坏了其余的代码。当我交换代码的顺序时,另一页上的功能被破坏了。不知道这会发生,就像我说我是 jquery 的新手! :D
猜你喜欢
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
相关资源
最近更新 更多