jQuery UI小部件:我如何获取小部件的容器?

问题描述:

我目前正在开发一个使用widget工厂的jQuery UI小部件,并且我需要包含我的小部件的选择器。jQuery UI小部件:我如何获取小部件的容器?

要澄清一些事情:

  • 我使用jQuery UI选项卡(官方)
  • 我的窗口小部件在每个标签创建(每片1个实例,这意味着不同的显示器)
  • 当我执行在标签的动作,需要更新位于同一选项卡中的小部件

问题:

  • 当我执行上述操作,更新不会出现在正确的标签,但在第一个

我想对我的行动听众的若干修改,但我相信这个问题来自于小部件本身。一切都是用类定义的(因为它意味着多次出现),除了用id定义的选项卡本身之外。我试图使它在所述div#id的孩子的widget元素中发生,但它不起作用。

我需要的是知道如何从得到widget的容器​​内控件的代码,可以使修改在右边的选项卡

谢谢你的帮助。

编辑:这里是显示我的应用程序的(非常)基本结构的jsfiddle。当我启动我的动作时,我会在最近的小部件实例上执行此操作,即在同一个选项卡中执行此操作。但实际效果在第一个选项卡中。这是因为(我认为)我的插件使用类来定位自己的元素。但是,如果我可以说

获取谁是我在

创建容器我相信孩子的元素,将工作

+0

你能发表一些代码吗?我不确定我是否完全掌握了这一点,您想要检索/更改执行动作时使用的原始选择器? – 2011-02-23 16:21:34

+0

我相信添加代码并不是一个好主意,因为它只有500行用于插件,还有其他应用程序更多。我会编辑我的帖子,并尝试使其更清晰 – 3rgo 2011-02-23 16:25:29

+0

也许不是整个代码,但也许只是“占位符”。例如“这是我的标签结构少内容”“我想调用这个命令并得到这个结果”。 – 2011-02-23 16:27:59

你需要使用类似:

myElement.mywidget("widget"); 
+1

是的,这是一个,例如你可以做$('#container')。autocomplete({opts ......})。autocomplete('widget')。attr('id ”, 'container_autocomplete_widget'); – TecHunter 2012-07-24 08:35:43

根据您的小提琴完成fnagel答案:

$(document).ready(function(){ 
    $('#tabs').tabs(); 

    $('#widget-1').mywidget().mywidget('widget').attr('id','widget-1_mywidget'); 
    $('#widget-2').mywidget().mywidget('widget').attr('id','widget-2_mywidget'); 

    $('.action').click(function(){ 
     var myWidget = $(this).siblings('.widget').mywidget("widget"); 
     myWidget.mywidget('dothis'); 
    }); 
});​