jCarousel Lite с загруженным контентом AJAX: .live () перестает работать - PullRequest
0 голосов
/ 12 января 2012

Я использую jCarousel Lite плагин в AJAX-загруженном контенте: вот (упрощенный) код

HTML:

<div id="#content">
    <ul>
        <li>First Item</li>
        <li>Second Item</li>
        <li>ThirdItem</li>
    </ul>
    <div id="pager>
        <a href="#" class="p1">1</a>
        <a href="#" class="p2">2</a>
        <a href="#" class="p3">3</a>
    </div>
</div>

jQuery:

$('.ajax').click(function(){
    var url = $(this).attr('href');
    $('#content').load(url, null, function(response){
        if (response != '') {
            $('#content').jCarouselLite({
                visible: 1,
                scroll: 1,
                circular: false,
                btnGo: ['.p1', '.p2', '.p3']
            });
        }
    });
    return false;
})

Пока все в порядке: содержимое AJAX загружается в #content, jCarousel Lite присоединяется и ссылки #pager работают должным образом (они просто прокручивают элементы)

ТеперьЯ хотел бы добавить еще кое-что к ссылкам #pager (например, добавить к ним классы, или открыть оповещение, или что-то еще): так как содержимое загружено в AJAX, я использую функцию .live:

$('#pager a').live('click', function(e){
    alert('hello!');
    $('#pager a').removeClass('selected');
    $(this).addClass('selected');
})

Ну, ничего не происходит!
Если я удаляю скрипт jCarousel (строки 5-10 из кода jQuery), все снова работает

Пожалуйста, вы можете помочь заставить его работать?И почему jCarousel перестает работать .live?Есть ли обходной путь?

Заранее спасибо

1 Ответ

0 голосов
/ 13 января 2012

Понял!
Я обнаружил, что не работают только ссылки #pager, поэтому я посмотрел код плагина jCarousel Lite и изменил строку 264 (jcarousellite_1.0.1.js):

$(val).click...

С

$(val).live...
...