2012-05-01 5 views
0

Я использую один из jQuery-тикеров в своем новом проекте, и страницы загружаются с использованием API истории HTML5 (pushState и popState). Как только содержимое страницы было загружено с помощью jQuery.getJSON(), я получаю предупреждение: «Элемент не существует в DOM!» - и я считаю, что это относится к контейнеру тикера (возвращается после вызова ajax), поскольку он не работает после загрузки содержимого.jQuery - добавьте тикер к DOM после вызова ajax

Я попытался создать экземпляр тикер снова в jQuery.getJSON() 'ы функции обратного вызова, но это не решает проблему:

jQuery.getJSON(url, function(data) { 
    jQuery.each(data, function(k, v) { 
     $('#' + k + ' section').fadeOut(200, function() { 
      $(this).replaceWith($(v).hide().fadeIn(200)); 
     });    
    }); 
    $('ul#feedNews').ticker({ 
     speed: 0.10, 
     controls: true, 
     titleText: '<strong>Latest news</strong>', 
     displayType: 'reveal', 
     direction: 'ltr', 
     pauseOnItems: 3000, 
     fadeInSpeed: 600, 
     fadeOutSpeed: 300 
    }); 
}); 

Любая идея, что будет решение?

ответ

1

Это, скорее всего, связано с тем, что плагин работает только с элементами, находящимися под нагрузкой. Я предполагаю, что он не использует delegate, live или делегированную версию on внутренне.

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

+0

Thanks Rory - я нашел плагин под названием livequery(): https://github.com/brandonaaron/livequery/downloads, который, похоже, выполняет работу. – user398341