Как онкликом активировать не плагин jQuery? - PullRequest
0 голосов
/ 07 июля 2011

Я установил сторонний плагин jQuery (это аккордеон).Он отображается на моей странице и работает как положено.

Я хочу запустить одно из действий плагина (открыть определенный слайд), когда нажимаю на изображение на своей странице.

Я могуне получается получить код и / или синтаксис для этого.

Плагин, который я установил, - "EasyAccordion" (http://www.madeincima.eu/blog/jquery-plugin-easy-accordion/). Это источник .js размещен здесь: http://pastebin.com/55JB4pr2.

Я использую плагин на странице Drupal7.

Я не думаю, что конкретный плагин или тот факт, что он использовался в Drupal, имеет отношение к правильному использованию jQuery.

jQuery в комплекте с Drupal. Я запускаю плагин на своей странице с помощью:

    ( function ($) {
        Drupal.behaviors.myEasyAccordion = {
            attach: function(context,settings) {
                $('#accordion1',context).easyAccordion({
                    autoStart:     false,
                    ...
                });
            }
        };
    })(jQuery);

В моей разметке у меня есть

    ...
    <div id="accordion1">
     ... EASYACCORDION MARKUP ...
    </div>
    ...

Опять же, с этим init & разметкой,аккордеон появляется / работает как положено.

На той же странице, на другой я добавил ссылку на изображение, например,

    ...
    <div id="myImg">
        <a><img src="myimg.png" /></a>
    </div>
    <div id="accordion1">
     ...  EASYACCORDION MARKUP ...
    </div>
    ...

Я хочу нажать на изображение вdiv "myImg" и привязка EasyAccordion к определенной открытой "панели". Я думаю, что активация определенной панели адресованас помощью функции

    line #127                jQuery.fn.activateSlide = function() {

, как показано на приведенной выше ссылке на вставку.

Iiuc, мне нужно добавить код в функцию инициализации выше, чтобы привязать щелчок изображения квыполнение действия в EasyAccordion.

Мой вопрос - как?

Я думаю, что мне нужно отключиться (например, для слайда № 3),

    jQuery(this).activateSlide(3);

добавление некоторого изменения,

    $('#myImg').click(function () {
      ...
    });

к init, присоединение его к функции инициализации EasyAccordion ().Что-то вроде?

    ( function ($) {
        Drupal.behaviors.myEasyAccordion = {
            attach: function(context,settings) {
                $('#accordion1',context).easyAccordion({
                    autoStart:     false,
                    ...
                });
 ---->          $('#myImg',context).easyAccordion({ ...
 ---->          ?????????
 ---->          });
            }
        };
    })(jQuery);

До сих пор правильный синтаксис ускользал от меня.По крайней мере, я не могу заставить изображение клика на самом деле вызывать «активацию» указанного элемента в EasyAccordion.

Эти два сообщения

http://stackoverflow.com/questions/5492258/easyacordion-jump-to-desired-slidenum-jquery-plugin
http://stackoverflow.com/questions/6243870/easyaccordion-jquery-plugin-callbacks

Я думаю, чтоблизко.Но я до сих пор не понимаю синтаксис лома в моем Drupal.behaviors ... строфа права.

Любое руководство?

1 Ответ

0 голосов
/ 08 июля 2011

Это работает.

Добавление целевого класса к каждому слайду, чтобы разметка:

    ...
    <div id="myImg">
        <a><img src="myimg.png" /></a>
    </div>
    <div id="accordion1">
    <dt class="slide_1" >
         ...
    <dt class="slide_2" >
         ...
    </div>
    ...

, затем в инициализации

    ( function ($) {
        Drupal.behaviors.myEasyAccordion = {
            attach: function(context,settings) {
                $('#accordion1',context).easyAccordion({
                    autoStart:     false,
                    ...
                });
                $('#myImg',context).click(function() {
                    $("dt.slide_1").activateSlide();
                });
            }
        };
    })(jQuery);

Теперь,щелчок мышью на img в элементе #myImg открывает целевой слайд ... здесь, 'slide_1', как и предполагалось.

...