Держи диалог div где я его положил

0

Есть ли способ заставить jQuery [UI] сделать диалог на месте? Или легко переместить его и заставить его работать?

Панель YUI2 дала вам свободу сделать это, предполагая, что вы знаете, что делаете, и оставили разметку именно там, где вы ее положили.
Но теперь, когда я перешел к использованию более простого jQuery, я заметил ограничение; Пользовательский интерфейс jQuery, похоже, только делает диалоги непосредственно под body.


Рассмотрим этот пример;
Предположим, что вы хотите использовать divs как способ смены имен css.
Напишите таблицу стилей, относящуюся к функции, префикс всех селекторов с .className и разметку внутри div с class="className".

Some

<div class="sectiona">
    <div class="popup" title="A popup">
        This text should be <span class="emphasis">blue</span>
    </div>
</div>

irrelevant

<div class="sectionb">
    <div class="popup" title="B popup">
        This text should be <span class="emphasis">red</span>
    </div>
</div>

content

<script>$(function() { $('.popup').dialog(); });</script>
.emphasis {
    color : yellow;
}

.sectiona .emphasis {
    color : blue;
}

.sectionb .emphasis {
    color : red;
}

Всплывающие .popup (.popup) будут перемещены в тело, потеряв все css! (очевидно, будет более сложным в реальной жизни). Поскольку все диалоги/панели позиционируются абсолютно, а те, которые я хочу, чтобы они содержали, имеют статическую позицию и являются дочерними элементами тела, и это не имело бы никакого значения, чтобы сохранить их там.

Не принимайте эту технику пространства имен CSS (если это даже правильная формулировка) как единственная причина для этого, я уверен, что есть другие варианты использования

Теги:
dom
dialog

1 ответ

1
Лучший ответ

Существует опция appendTo, вам нужно указать ее для каждого отдельного всплывающего окна:

// HTML
// added a common "section" class to your divs
Some
<div class="section sectiona">
    <div class="popup" title="A popup">This text should be <span class="emphasis">blue</span>
    </div>
</div>
irrelevant
<div class="section sectionb">
    <div class="popup" title="B popup">This text should be <span class="emphasis">red</span>
    </div>
</div>
content

// javascript
$('.section').each(function () {
    $(this).find('.popup').dialog({
        appendTo: this
    });
});

играть на скрипке

  • 0
    Это особенность более нового jQuery? Поскольку API говорит, что опция appendTo является селектором , а не элементом
  • 0
    Вы правы: jqueryui.com/upgrade-guide/1.10 . Я только проверил документ, чтобы видеть, была ли опция, не проверял, когда это появилось. Можете ли вы перейти на jquery-ui> = 1.10?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню