Добавьте плагин jQuery colorbox к динамически созданному элементу - PullRequest
15 голосов
/ 14 марта 2010

Обычный способ назначить функциональность цветовой рамки для ссылки такой:

$("a.colorbox").colorbox({ transition: "elastic" });

Вновь добавленные элементы не связаны таким образом.

Как я могу добавить colorbox для динамически создаваемых <a class="colorbox"></a> элементов тоже?

Ответы [ 6 ]

19 голосов
/ 14 марта 2010

Метод , описанный здесь , предназначен для привязки в реальном времени к событию click в элементах, которые вас интересуют (например, в данном случае .colorbox) и вызывает функцию библиотеки colorbox в обработчик:

$('.colorbox').live('click', function() {
  $.colorbox({href:$(this).attr('href'), open:true});
  return false;
});
18 голосов
/ 08 апреля 2011

Вы также можете попробовать это:

$('.colorbox').live('click',function(e){
    e.preventDefault();
    $(this).colorbox({open:true});
});

Я думаю, что это немного чище, чем при использовании команды fn.

12 голосов
/ 03 августа 2013

Поскольку live устарело, вы должны использовать на

$('body').on('click', '.colorbox', function() {
    $('.colorbox').colorbox({rel: $(this).attr('rel')});
});

Этот код также позволяет группировать.

4 голосов
/ 04 января 2012

Этот пост старый, но это может помочь другим: решение simonthetwit в порядке, но вам нужно будет дважды щелкнуть ссылку триггера.Colorbox может вызываться напрямую, поэтому это должно работать:

$( '.colorbox' ).live('click',function(e){
        e.preventDefault();
        $.colorbox({open:true});
        //inline example
        //$.colorbox({inline:true, width:"50%", href:"#inline_content"});
});

Ура!

1 голос
/ 26 июля 2016

Вот решение, которое я нашел, чтобы избежать необходимости дважды щелкать ссылку, чтобы вызвать событие:

$(document.body).delegate('.<my-class>', 'click', function(e) {  
    e.preventDefault();  
    $('.<my-class>').colorbox({<my-code>})  
});
0 голосов
/ 08 марта 2012

У меня была та же проблема, что и у @sunburst, из-за необходимости дважды щелкнуть ссылку триггера. Использовал тот же код, но .delegate() вместо .live(). Решил все и почистил мой jQuery красиво!

Хорошее объяснение здесь: http://www.alfajango.com/blog/the-difference-between-jquerys-bind-live-and-delegate/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...