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方法里不是默认就循环的执行事件吗?
$.fn.alert = Plugin
这个是jQuery插件的一个写法,如果你使用选择器后这里的this指向的是你选择的元素集,比如$('.xxx'),这样可能会有很多歌匹配的元素,上面的就会遍历你选择的这些元素,一起种一个为例:
这里是什么意思呢?
1.看你有没有在当前这个元素“alert”过,有的话直接执行你对应传过来的option方法(data[option].call($this)),参数就是$this;
2.没有“alert”过就在当前元素上做一个alert, data = new Alert(this),就是个单例,之后再执行;
你进入了一个误区,这里的each循环的不是事件