JQuery UI виджет: Как я могу получить контейнер виджета? - PullRequest
2 голосов
/ 23 февраля 2011

В настоящее время я разрабатываю виджет пользовательского интерфейса jQuery с использованием фабрики виджетов, и мне нужно получить селектор, содержащий мой виджет.

Чтобы прояснить ситуацию:

  • Я используюВкладки пользовательского интерфейса jQuery (официальные)
  • Мой виджет создается на каждой вкладке (по 1 экземпляру для каждой вкладки, что означает различные варианты отображения)
  • Когда я выполняю действие на вкладке, необходимо обновитьвиджет находится в той же вкладке

Проблема:

  • Когда я выполняю указанное действие, обновление происходит не на правой вкладке, а на первой

Я попробовал несколько модификаций слушателей в своих действиях, но я считаю, что проблема связана с самим виджетом.Все определяется с помощью классов (потому что оно должно появляться несколько раз), кроме самой вкладки, которая определена с помощью идентификатора.Я попытался сделать это в элементе виджета, который является потомком указанного div#id, но он не работает.

Мне нужно знать, как получить контейнер виджета из в коде виджета, для внесения изменений в правой вкладке

Спасибо за помощь.

РЕДАКТИРОВАТЬ :вот jsfiddle , показывающий (очень) базовую структуру моего приложения.Когда я запускаю свое действие, я делаю это на ближайшем экземпляре виджета, то есть на той же вкладке.Но фактический эффект находится на первой вкладке.Это потому, что (я думаю) моего плагина, который находит свои собственные элементы с помощью классов.Но если бы я мог сказать

Получить элементы, которые являются дочерними элементами контейнера, в котором я был создан

Я считаю, что это будет работать

Ответы [ 2 ]

1 голос
/ 24 июля 2012

Вам нужно использовать что-то вроде:

myElement.mywidget("widget");
0 голосов
/ 24 июля 2012

Завершение ответа 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');
   });
});​
...