jquery - 将事件附加到 jquery 中的 window.on ("load", function(){})

标签 jquery dom

我编写了一些像 jquery 插件一样工作的代码,根据元素之间的相对高度将 css 分配给元素。我一直试图弄清楚如何使插件工作,而不需要从函数外部调用/包装它在 window.on("load", function(){}) block 中。我应该补充一点,如果我从外部调用它,一切都会正常运行

 $(window).on("load",function(){}) 

block 。我的两个问题是:

  1. 我可以为 $(window).on("load", function(){}) 事件分配操作多少次?如果我多次分配某些内容,每个后续分配都会替换第一个分配,我是否应该添加类似 javascript addEventListener 方法之类的内容?

  2. 如何在

    中将我的操作分配给此事件
     (function( $ ) { $.fn.resizeCss = function() {}; })(jQuery);
    

    阻止?

真的很困惑,任何帮助将不胜感激。

最佳答案

您应该能够根据需要多次向 $(window).on("load"... 分配操作。这是使用 的主要好处之一。 的一个优点是,如果您选择的话,它使您能够为事件处理程序命名空间。

例如,在:

$(window).on("load.loading1", function(){}) 

loading1 是事件处理程序的特定实例的名称。这很有用,因为除了事件之外,您还可以根据处理程序的名称来选择删除处理程序。

例如:

$(window).off("load.loading1")

将仅取消绑定(bind)loading1事件处理程序,其中

$(window).off("load")

将取消绑定(bind)所有load事件处理程序。


关于你的第二个问题,我很抱歉给你带来了困惑,但我对 (function($) 的理解是错误的。它实际上意味着其中的代码是自动执行的。换句话说,它会在自己的时间自动执行,无需放入处理程序中。

我仍然建议您将其从外部绑定(bind),因为这是更好的编码实践,并且通常会使您的插件更具可扩展性。


更新

根据您的评论,我可以告诉您,您可以做到这一点,以便开发人员不必键入 $(window).load谁使用你的插件,但这是非常糟糕的编码实践。然而,这会让你的插件的可扩展性大大降低。另外,如果您使用 $(document).ready 执行此操作,则仅当插件的调用者不是元素时它才有效。这样做的原因是因为 jQuery 必须找到调用它的元素,并且为了找到它,文档必须已准备好使其可见。

您可以做的就是在插件本身中添加 $(window).load 处理程序。换句话说,它将位于用 $.fn.... 声明的函数内部。您可能还想创建一些反馈,以便开发人员可以判断该函数是否在窗口加载之前被调用。然而,如前所述,我强烈建议不要这样做。更好的做法是在文档中记下该插件通常应从 $(window).load... 事件调用。这确实应该留给开发人员来做。

关于jquery - 将事件附加到 jquery 中的 window.on ("load", function(){}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993451/

相关文章:

jquery - 查找父级及其父级的第一个子级

javascript - 使用 jQuery 和 AJAX 进行长轮询的正确方法是什么

javascript - 基于复选框选择jquery更新文本框

javascript - AngularJS : invoking optional nested directive on template sub-element

javascript - 添加元素时避免html格式化

dom - 在 Node.js 中生成 javascript 以供客户端使用的方法

javascript - 将文本附加到 slider 文本 (display_selector)

javascript - 如何使用 jQuery 调用 vbscript 函数?

javascript - 在外部 javascript 文件/django 中使用 DOM 时出现问题

jquery - 如何在不使用 html 的情况下将元素包含在 div 中?