在jquery中将事件附加到window.on(“load”,function(){})
我写了一些像jquery插件一样工作的代码,根据它们相对于彼此的高度为元素分配css。 我试图找出如何使插件工作而不调用/包装在window.on(“load”,function(){})块从函数的OUTSIDE。 我应该补充一点,如果我从外部调用它,一切运行正常
$(window).on("load",function(){})
块。 我的两个问题是:
-
我可以为$(window).on(“load”,function(){})事件分配动作多少次? 如果我多次分配一些东西,每个后续的分配会替换第一个,我应该添加类似javascript addEventListener方法吗?
-
如何从中将此操作分配给此事件
(function( $ ) { $.fn.resizeCss = function() {}; })(jQuery);
块?
真的难倒在这里,任何帮助将不胜感激。
您应该能够将操作分配给$(window).on("load"...
多次按照您的意愿。使用.on
一个主要好处是它使您能够命名事件处理程序的命名空间,如果你这样选择。
例如,在:
$(window).on("load.loading1", function(){})
loading1
是事件处理程序的特定实例的名称。 这很有用,因为除了事件之外,您还可以选择根据名称删除处理程序。
例如:
$(window).off("load.loading1")
将取消绑定loading1
事件处理程序,其中as
$(window).off("load")
将取消绑定所有load
事件处理程序。
至于你的第二个问题,我为这个混乱道歉,但我错了(function($)
。它实际上意味着它内部的代码是自动执行的。换句话说,它在自己的时间执行,自动执行 – 不要放入处理程序。
我仍然建议你在外部绑定它,因为它是更好的编码实践,通常会使你的插件更具可扩展性。
UPDATE
根据您的评论,我可以告诉您,您可以这样做,以便$(window).load
不必由使用您的插件的开发人员键入,但它是非常糟糕的编码实践。 但是,它会使您的插件显着降低可扩展性。 此外,如果您使用$(document).ready
执行此操作,则仅在插件的调用者不是元素时才会起作用。 这样做的原因是因为调用它的元素必须由jQuery找到,并且为了找到它,文档必须已经准备好让它可见。
你可以做的是在你的插件中添加$(window).load
处理程序。 换句话说,它将在用$.fn....
声明的函数内部。 您可能还想创建一些反馈,以便开发人员可以在加载窗口之前判断函数是否已被调用。 但是,如前所述,我强烈建议不要这样做。 更好的做法是在文档中记下通常应该从$(window).load...
事件中调用插件。 这真的应该留给开发人员。