2

我正在写一个jquery UI小部件,它只是简单地包装引导popover插件,在小部件中,您可以传递'singular'选项,如果传入的话它应该调用插件的所有其他实例的函数。获取对jQuery UI部件的所有实例的引用?

$('#one').myWidget(); 
$('#two').myWidget(); 
$('#three').myWidget(); 
$('#four').myWidget(); 

$('#one').myWidget('show'); //stuff from widget one is now visible 
$('#two').myWidget('show'); //stuff from widget one and two are now visible 
$('#three').myWidget('show'); //stuff from widget one, two and three are now visible 
$('#two').myWidget('hide'); //stuff from widget one and three are now visible 
$('#four').myWidget('show', {singular:true}); //stuff from widget four is now visible 

所以,我想show函数看起来像:

show: function(options){ 
    options = options || {}; 

    if(options.singular){ 
     var instances = '????'; // how do I get all instances? 
     $.each(instances, function(i, o){ 
      o.myWidget('hide'); 
     }); 
    } 

    this.element.popover('show'); 

} 

所以,问题的存在,我怎么才能到具有myWidget部件上的所有元素的引用他们?

+2

当你将这个插件应用到这些元素时,那么你在''return this.each(function(){''在你的实例化器中引用它们,所以给它们一个类,'myWidget'然后你可以做' $('。myWidget')。each('.. – Ohgodwhy

+0

我同意 - 您可以在小部件上放置一个类 - 然后遍历每个 - 我已经看到编码器放置一个数据属性 - 然后以各自的方式运行它们选择器 – 2012-11-03 00:07:41

+0

这是有效的,以及如何获得对您不控制的小部件的所有实例的引用(例如,UI的进度条等) – Hailwood

回答

8

您可以使用$(':ui-myWidget'),其中ui是您的小部件的命名空间。它比使用像$('.ui-myWidget')这样的类选择器要慢,因此在创建小部件时添加该类仍然是一个好习惯。

jQuery UI对所有的小部件都这样做,所以你可以通过$(':ui-progressbar')$('.ui-progressbar')获得每个进度条。

This blog post解释更深的薄。

相关问题