2012-05-13 4 views
0

Я создал dijit.TooltipDialog и все работает так, как должно. Однако, если в диалоговом окне всплывающей подсказки появляется другое диалоговое окно, оно появляется за диалоговым окном всплывающей подсказки, а не поверх него. Я проверил zIndex на двух диалоговых окнах, а диалоговое окно подсказки - 1000, а в другом диалоговом окне - 950.Как установить zIndex на dijit.TooltipDialog?

Я попытался установить zIndex на соответствующем узле контейнера и «domNode» диалогового окна подсказки всплывающей подсказки и без везения. Так кто-нибудь знает, как установить zIndex в диалоговом окне подсказки?

+0

ожидать различного поведения в отношении различных браузеров и вложенных диалогов подсказок. tooltipdialog - это не путь, поскольку они являются модальными по дизайну. вместо этого подумайте о выпадающих меню в качестве альтернативы – mschr

+0

Помимо полного диалога, подсказка всплывающей подсказки - именно то, что мне нужно. У меня есть dojox.TreeGrid с элементом меню правой кнопки мыши, который предназначен для предварительного просмотра выбранного документа. Это запускает tooltipDialog с формой и всем, начиная с основной записи. Однако в этой форме могут появляться подсказки, диалоги и другие элементы, которые должны отображаться поверх диалога всплывающей подсказки. – keithstric

ответ

1

После ответа mschr, я не мог найти свойство underlayAttrs из dijit.TooltipDialog. Но это привело меня к обнаружению _popupWrapper, который является оберточным узлом всего всплывающего окна. У этого узла был zIndex 1000. Приведенный ниже код исправил проблему:

var dij = dijit.byId(dojo.query("[id*='_TooltipDialog_']")[0].id); 
dij.onShow = function() { 
    dojo.style(dij._popupWrapper,"zIndex",900); 
} 
1

, как вы найдете, если вы осмотрите дом после создания всплывающей подсказки программы - всплывающая подсказка помещается в контейнер с наложением ниже <body>.

Как уже упоминалось, ищите альтернативные методы для этого. Но ответ таков: Чтобы успешно установить z-index, вы должны найти правильный узел, который не является domNode, так как диалог имеет собственный слой через проект dijit.popup.

Вот скрипку для него: http://jsfiddle.net/rQHSP/

Короче говоря, это то, что вы могли бы сделать.

myDialog.onShow = function() { 
     node = this.domNode 
     // loop upwards untill we hit a wall or nodes class mathes popup 
     while (node 
      && (!node.className || !node.className.match("dijitTooltipDialogPopup"))) 
       node = node.parentNode 

     console.log(dojo.style(node, "zIndex") 
    } 
+0

Спасибо за ответ. Я прочитал ваш ответ, прежде чем вы отправили код, но я не смог найти свойство underlayAttrs, но это привело меня к tooltipDialog._popupWrapper, который имел zIndex 1000. Таким образом, используя dojo.style (this._popupWrapper, «zIndex», 900). – keithstric

Смежные вопросы