2011-02-23 80 views
2

我目前正在開發一個使用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

回答

1

你需要使用類似:

myElement.mywidget("widget"); 
+1

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

0

根據您的小提琴完成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'); 
    }); 
});​