использование функции .delegate в слайд-шоу - PullRequest
0 голосов
/ 08 октября 2011

У меня есть скрипт, который запускает слайд-шоу для моей страницы. Я пытаюсь использовать .delegate(), чтобы вставить новый набор изображений, показанных в слайд-шоу, включая его эскизы. Я использую функцию .load() для загрузки внешнего <div> для замены некоторого HTML-кода на активной странице. У меня также есть кнопки с идентификаторами (#kick1, #kwick2 и т. Д.), Которые определяют, какой набор слайд-шоу загружается.

 jQuery("#kwick2").click(function () {
     jQuery("body").delegate('#slideshow', 'click', function() {
         jQuery('#slideshow').load('/design.html #design');      
     )};
 )};

Уверен, что синтаксис неверен. Кто-нибудь может мне помочь?

#slideshow div - это то, что я создал, чтобы содержать некоторые другие div напрямую осуществляется с помощью сценария слайд-шоу. В пределах div ID #slideshow находятся

<div class="main_image">, <div class="desc"> и <div class="image_thumb">.

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

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Вы не должны повторно определять каждый раз, когда нажимаете кнопку. Вы делаете неправильно.

Вместо этого у вас должно быть что-то вроде:

var foobar = (function () {

   var func , mod1 , mod2;
   mod1 = function () {
      /* do something in state 1 */
   };
   mod2 = function () {
     /* do something in state 2 */
   };

   return {
      state: function (e) {
         switch (this.id){
            case 'kwick1':
               func = mod1;
               break;
            case 'kwick2':
               func = mod2;
               break;
         }
      },
      callback: function (e) {
         func.call();
      }
   }
})();

jQuery("#kwick1").click( foobar.state ); // and you really should delegate this
jQuery("#kwick2").click( foobar.state );
jQuery("body").delegate('#slideshow','click', foobar.callback);

или что-то похожее на это ..

И нет, я не тестировал этот код . Это написано, чтобы объяснить концепцию, а не кормить людей с ложечки.

0 голосов
/ 08 октября 2011

не уверен, правильно ли я понял вопрос, в любом случае вам нужно указать, какое событие вы делегируете

 jQuery("#kwick2").click(function () {
 jQuery("body").delegate('#slideshow',"click", function(){
    jQuery('#slideshow').load('/design.html #design');      
    )};
 )};

delegate

...