помогите объединить функции jquery в одном файле - PullRequest
1 голос
/ 17 июля 2009

Я пытаюсь объединить несколько функций в одном файле 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'); }

(этот я обнаружил при переполнении стека здесь и немного его изменил, возможно, именно здесь я допустил ошибку ...)

Второй:

$(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'); }

Любая помощь или указатель в правильном направлении для получения дополнительной информации об этой проблеме очень приветствуется.

1 Ответ

1 голос
/ 17 июля 2009

Мне удалось заставить ваш код работать нормально (почти) без изменений. Пара вещей.

  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'); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...