2010-04-20 13 views
5

Estoy tratando de mostrar un cuadro de diálogo (div) que está dentro de otro div. De esta manera, puedo mantener todos mis diálogos juntos fácilmente.¿Por qué no aparece el cuadro de diálogo de la interfaz de usuario jQuery cuando está anidado div?

La página se ve algo como esto:

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

He añadido las propiedades necesarias para que:

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

y tratar de hacer que se muestre:

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

y no lo hará

Sin embargo, si cambio de la última línea de

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

lo hace! Pero no quiero referirme a él directamente, porque probablemente otra cosa en mi página se llamará "inicio de sesión" también, en algún momento. Y quería dejar de hacer esos ID tan largos como id = "lp_dialogs_bookshelf_login".

¿Estoy haciendo algo mal aquí? ¿O debería olvidarlo y comenzar a usar esos desagradables id nuevamente?

+1

Nada en la página debe tener un 'id' de" inicio de sesión ". El objetivo del atributo 'id' es que representa un solo elemento en la página. –

+0

De acuerdo. Debes usar los atributos 'class' en lugar de' id's. – Prutswonder

+0

Tiene razón, pero simplemente "se sintió" tan mal para usar esos ID largos. Empezaré a hacer eso sin embargo, y haré referencia al diálogo directamente. ¡Gracias! – Heras

Respuesta

10

Cuando creó el cuadro de diálogo, se movió esto:

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

Al final de su documento HTML, justo antes de </body>, por lo que el selector de $("div#bookshelf div#login") no lo encuentra ... porque no es adentro ya allí.

Yo sólo uso div#login en todos los casos, ya que debe ser único, pero para hacer su trabajo ejemplo, tiene que mover el cuadro de diálogo después de que se creó, como esto:

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

Agradable explicación +1 – Raja

+0

Voy a darle al diálogo una identificación diferente y más larga, y la haré referencia directamente, ¡pero es genial saber exactamente por qué no funcionó! ¡Muchas gracias! – Heras

+0

@Heras - Bienvenido :) –

Cuestiones relacionadas