2010-04-20 2 views
5

Я пытаюсь показать диалог (div), который находится внутри другого div. Таким образом, я могу легко держать все свои диалоги вместе.Почему мой диалог jQuery UI не появляется, когда он является вложенным?

страница выглядит примерно так:

<div id="bookshelf"> 
    <div id="login">dialog</div> 
</div> 

я добавил необходимые свойства для него:

$("div#bookshelf div#login").dialog({ autoOpen: false }); 

и попытаться сделать его показать:

$("div#bookshelf div#login").dialog("open"); 

и это не будет.

Однако, если изменить последнюю строку

$("div#login").dialog("open"); 

Это делает! Но я не хочу ссылаться на него напрямую, потому что в какой-то момент возможно что-то еще на моей странице будет называться «login». И я хотел прекратить делать эти очень длинные id как id = "lp_dialogs_bookshelf_login".

Я делаю что-то неправильно здесь? Или я должен просто забыть об этом и снова начать использовать эти неприятные идентификаторы?

+1

Ничто другое на странице должны имеют «id» из «login». Весь смысл атрибута id означает, что он представляет собой один и только один элемент на странице. –

+0

Согласен. Вы должны использовать атрибуты 'class' вместо' id '. – Prutswonder

+0

Вы правы, но он просто «чувствовал» настолько неправильно использовать эти длинные id. Однако я начну делать это и напрямую ссылаюсь на диалог. Спасибо! – Heras

ответ

10

При создании диалога, он переехал в следующем:

<div id="login">dialog</div> 

К концу вашего документа HTML, непосредственно перед </body>, поэтому селектор $("div#bookshelf div#login") не находит его ... потому что это не внутри там больше.

я бы просто использовать div#login во всех случаях, так как он должен быть уникальным, но, чтобы сделать ваш пример работы, вам нужно, чтобы переместить диалоговое окно после его создания, например:

$("div#bookshelf div#login").dialog({ autoOpen: false }) 
          .parent().appendTo('#bookself'); 
+0

Хорошее объяснение +1 – Raja

+0

Я дам диалогу другой, более длинный идентификатор, и будет ссылаться на него напрямую, но это здорово узнать, почему он не работает! Большое спасибо! – Heras

+0

@Heras - Добро пожаловать :) –

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