简单的jQuery“toggler”插件 - 除了Opera之外,就像魅力一样

时间:2011-09-29 22:52:49

标签: jquery opera

我已经编写了这个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 :(得分:0)

我猜您遇到了made me break the BBC iPlayer的错误,即Opera中的动态插入脚本在添加脚本之后无法“看到”内容? (除非你使用jQuery的$(document).ready()或类似的)。