bootstrap插件的写法疑问。

发布于 2022-09-01 06:45:14 字数 369 浏览 5 评论 0

function Plugin(option) {
    return this.each(function () {
      var $this = $(this)
      var data  = $this.data('bs.alert')

      if (!data) $this.data('bs.alert', (data = new Alert(this)))
      if (typeof option == 'string') data[option].call($this)
    })
}

以上代码是bootstrap的alert插件的写法,我的疑问是为什么要each循环执行呢?jquery方法里不是默认就循环的执行事件吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

成熟稳重的好男人 2022-09-08 06:45:14

$.fn.alert = Plugin
这个是jQuery插件的一个写法,如果你使用选择器后这里的this指向的是你选择的元素集,比如$('.xxx'),这样可能会有很多歌匹配的元素,上面的就会遍历你选择的这些元素,一起种一个为例:

  var $this = $(this)
  var data  = $this.data('bs.alert')
  if (!data) $this.data('bs.alert', (data = new Alert(this)))
  if (typeof option == 'string') data[option].call($this)

这里是什么意思呢?
1.看你有没有在当前这个元素“alert”过,有的话直接执行你对应传过来的option方法(data[option].call($this)),参数就是$this;
2.没有“alert”过就在当前元素上做一个alert, data = new Alert(this),就是个单例,之后再执行;
你进入了一个误区,这里的each循环的不是事件

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文