2013-08-05 2 views
1

Я использую slimbox (http://www.digitalia.be/software/slimbox) очень популярный легкий лайтбокс для jQuery.Загрузка тонкой коробки с .on()

Я использовал его много в прошлом, однако теперь я немного застрял. У меня была форма, загружаемая через AJAX, и поэтому мне нужно использовать функцию .on() для активации slimbox.

Но я не могу заставить его работать. Я посмотрел на код slimbox, и это не делает для меня много смысла. Я попробовал это в моих:

$("#content.settings").on("click","div.scroll a.slimbox", function (e) { 
     e.preventDefault(); 
     $(this).slimbox(); 
    }); 

И это работает, но только на второй мыши по какой-то причине она принимает два щелчка на одном объекте функции. Есть идеи?

ответ

3

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

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

$("#content.settings").on("click","div.scroll a.slimbox", function (e) { 
    var $this = $(this); 
    e.preventDefault(); 
    if(!$this.data('slimboxed')){ 
     $this.slimbox().data('slimboxed', true).click(); 
    } 
}); 
+0

Привет! Это работает, но я действительно не понимаю, что он делает, что такое «slimboxed», это класс или что-то еще? Вы можете объяснить? – Chud37

+0

@ Chud37 no это просто флаг, не означающий, что плагин 'slimbox' был инициализирован для элемента –

2

Один из способов, чтобы вызвать плагин снова после того, как Ajax запрос делается. Поэтому добавьте это в свой метод успеха

$("#content.settings div.scroll a.slimbox").slimbox(); 
+0

Это хорошая идея, я думаю, что я сделал подобное в прошлом, но по какой-то причине я не могу заставить его работать, и не выдает ошибку. – Chud37

 Смежные вопросы

  • Нет связанных вопросов^_^