простой плагин jQuery "toggler" - работает как шарм, кроме как в Opera - PullRequest
0 голосов
/ 30 сентября 2011

Я написал этот плагин jQuery, но он не будет работать в Opera (я использую 11.51).Он отлично работает во всех других браузерах, даже в IE7, так что это действительно поставило меня в тупик.

Любая помощь очень ценится, спасибо.

    (function($) {

  $.fn.toggleBox = function(options) {

    var opts = $.extend({}, $.fn.toggleBox.defaults, options);

    return this.each(function() {

    var $this = $(this);

    var target;

    $this.click(function(ev) {  


            ev.preventDefault();


            $(target).stop(1,1).slideToggle(opts.speed, 'swing', function() {

                    $(target).animate({'opacity': 1});

                });


        }).hover(

            function(){


                    $(target).stop(1,1).animate({'opacity': 0.4});

                },

            function(){

                    $(target).stop(1,1).animate({'opacity': 1});
                }

        )

        .each(function(){

            $(this).css('cursor', 'pointer');

            target = $(this).attr('data-toggler');

            target = $('[data-toggle-content=' + target + ']');     


            if ( $(this).attr('data-toggler-state') == 'open') {

                $(target).show();

            } else {

                $(target).hide();

                }

            });

    });

  }; 


  // Default settings for the plugin
  $.fn.toggleBox.defaults = {
    speed: 500
  };

})(jQuery);
$('[data-toggler]').toggleBox();
// end toggler 

Ниже приведена разметка html, используемая для переключателяи это содержание:

 <div data-toggler="togglerID"> Click to toggle content</div>


 <div data-toggle-content="togglerID"> Toggler content </div>

=========== РЕДАКТИРОВАТЬ ===========

Хорошо, что цифры ... как толькокогда я отправляю вопрос, я выясняю это.

Мне нужно было изменить последнюю строку, где я вызываю плагин для запуска в domReady:

jQuery(function ($) { $('[data-toggler]').toggleBox(); });

Теперь отлично работает в Opera.

1 Ответ

0 голосов
/ 03 октября 2011

Полагаю, вы столкнулись с ошибкой, что заставил меня сломать iPlayer BBC , а именно, что динамически вставленный скрипт в Opera не может "увидеть" контент после скрипта, который его добавил? (Если вы не используете jQuery's $(document).ready() или аналогичный).

...