Jquery Live с плагином Facebox

Я пытаюсь использовать плагин jquery facebox с живыми событиями (официальная реализация, а не плагин).

Моя главная страница загружается на странице через ajax. Эта удаленная страница также имеет ссылки на другие удаленные страницы, которые я хотел бы отобразить во всплывающем диалоге. Я использовал плагин Facebox для этого.

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

<script type="text/javascript">
            jQuery(document).ready(function($) {

                $('a[rel*=facebox]').live("click", function() {
                    $('a[rel*=facebox]').facebox()
                });
            });
          </script> 

это правильный способ использовать живые события?

К сожалению, моя машина разработки состоит только из IE6 [:(], поэтому я не могу использовать firebug для отладки кода.

13.10.2009 09:46:49
3 ОТВЕТА
РЕШЕНИЕ

Я предполагаю, что clickсобытие слишком поздно, чтобы начать facebox.
Это может сработать mousedown(казалось, на моем тесте все в порядке, но не совсем так)

$('a[rel*=facebox]').live("mousedown", function() { 
    $(this).facebox(); // this should do, you don't need all links
});

Я бы порекомендовал это либо. Я предлагаю активировать лицевую панель после завершения вызова AJAX:

// sample code - you might use an other AJAX call
$('#dynamicDiv').load('...', {}, function(){
    $('#dynamicDiv a[rel*=facebox]').facebox();
});
4
13.10.2009 11:58:16
Этот стреляет в фейсбокс n + 1 раз. Каждый раз, когда вы нажимаете, Facebox умножается сам.
fabrik 28.04.2010 07:40:18

Большое спасибо, у меня возникли проблемы, потому что после загрузки моего динамического контента rel = facebox, казалось, не работал вообще

Я просто "активирован"

jQuery (документ) .ready (function ($) {$ ('a [rel * = facebox]'). facebox ()})

после ajax.response и вуаля я вижу всплывающее окно с изображением лица вместо страницы по ссылке.

Спасибо большое, Коби.

1
11.11.2009 15:04:10

дополняя ответ Коби фабричным комментарием:

$('a[rel*=facebox]').live("mousedown", function() { 
    $(this).unbind('click'); //everytime you click unbind the past event handled.
    $(this).facebox();
});

Таким образом, вы можете предотвратить Facebox умножить события.

кредиты коби.

6
19.01.2011 15:50:35