我认为jQuery小部件是jQuery对象,它们可以轻松地链接到DOM对象(例如,你可以存储状态,或者处理事件),但是我在这里理解实例模型时遇到了一些问题。我有一个这样的对象;
var xs_widgets = {
jQuery : $,
options: { },
_create: function () {
this.make_sortable() ;
},
_init: function () { alert ( 'init' ) ; }
make_sortable: function () { alert ( 'make-sortable' ) ; }
}
我用;
将它绑定到jQueryjQuery.widget( "ui.xs_widgets", xs_widgets );
然后,我尝试将一些DOM元素绑定到窗口小部件;
$('li.widget').xs_widgets();
现在就是这样。我想每个<li class="widget">
都附加了一个jQuery对象,但是我可以收集的是一个全局的xs_widget对象,而且它从上面的查询得到了jQuery对象,而你自己必须处理实例数据?我认为小部件的重点是避免处理实例的开销?上面的代码针对HTML运行,其中包含两个<li>
元素的产量;
make-sortable
init
make-sortable
init
我在期待;
make-sortable
init
init
哦,请帮忙!我正在阅读教程和文章,但我似乎错过了某些重要的东西。
答案 0 :(得分:2)
您的xs_widgets函数小部件会为您的选择器中的每个匹配元素调用一次(因此,两次使用两个标记)。
我认为每个人都附加了一个jQuery对象。
他们这样做。这就是_create和_init都被调用两次的原因。但是,只有在将窗口小部件添加到元素时才会调用create方法一次。如果您在第一次通话后立即再次拨打$('li.widget').xs_widgets();
,则只能获得:
初始化
初始化