2013-05-02 2 views
1

Я использую плагин WooThemes Flexslider 2 в своей структуре WordPress.
Вот код:Flexslider 2, как загрузить с (document) .ready function

$(window).load(function() { 
    $('#flexslider-<?php echo $postid; ?>').flexslider({ 
     smoothHeight: true, 
     slideshow:  false, 
     start: function(slider) { 
      slider.container.click(function(e) { 
       if(slider.animating) { 
        // action 
       } else { 
        slider.flexAnimate(slider.getTarget('next')); 
       } 
      }); 
     } 
    }); 
}); 

Сценарий хорошо работает с "$ (окно) .load (функция() {"

Если изменить «$ (окно) .load (function() {" to " $ (document) .ready (function() {" слайдер не работает. В Safari скрипт загружается успешно, но не получает текущую высоту изображения. скрипт для работы с «$ (document) .ready (function() {" во всех браузерах?

Thanks

+0

'Сценарий хорошо работает с«$ (окно) .load (функция() {» ', то почему вы хотите изменить что 'document.ready' .. – bipen

+1

, потому что с помощью« $ (window) .load (function() {«пользователь не может использовать слайдер после того, как все остальные скрипты загружены на 100%, и он загружает последнее. С помощью« $ (document) .ready (function() {«ползунок загружается одновременно со всеми другими скриптами.Это свойство od jquery. – DesignPuma

+0

еще одна причина не использовать' $ (window) .load (function() {'является то, что он конфликтует с mediaelement в IOS. – yitwail

ответ

1

Вы можете написать функцию интервала, которая смотрит на первое изображение в вашем элементе $('#flexslider-<?php echo $postid; ?>'). Закончив загрузку, вызовите функцию flexslider.

Это должно дать вам подсказку, не тестируется:

$(document).ready(function(){ 
    var firstImage = $('#flexslider-<?php echo $postid; ?>').find('img').filter(':first'), 
     checkforloaded = setInterval(function() { 
      var image = firstImage.get(0); 
      if (image.complete || image.readyState == 'complete' || image.readyState == 4) { 
       clearInterval(checkforloaded); 
       $('#flexslider-<?php echo $postid; ?>').flexslider({ 
        // your options 
       }); 
      } 

     }, 20); 

}); 
+0

Это работает, спасибо! – DesignPuma

+0

Это обходное решение для нерешенного медиа : https://github.com/johndyer/mediaelement/issues/916 – yitwail