jquery
  • jquery-selectors
  • 2012-03-17 17 views 7 likes 
    7

    ¿Hay alguna forma de tener selectores jQuery anidados?Selectores jQuery anidados

    Por ejemplo:

    si la página tiene también un ID = "LeadEditForm_Title" algún lugar en ella, luego haga lo siguiente ...

    jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
        var container = $(this).width(); 
        var width_offset = -50; 
        var top_offset = 25; 
        var width = (container + width_offset).toString(); 
        jQuery(".mywidget").appendTo(document.body).css('width', width + 'px'); 
        jQuery(".mywidget").appendTo(document.body).css('position', 'absolute'); 
        jQuery(".mywidget").appendTo(document.body).css('top', ($(this).offset().top+top_offset).toString() + 'px'); 
        jQuery(".mywidget").appendTo(document.body).css('left', Math.round($(this).offset().left) + 'px'); 
    }); 
    

    PREGUNTA:

    ¿Cómo hago una si jQuery(".LeadEditForm_Title"), haz lo anterior? básicamente una llamada jQuery anidado ... He visto ejemplos en los que tienen:

    jQuery(function(){ // my code goes here }); 
    

    Pero yo quiero que dependen de la ID ".LeadEditForm_Title".

    +0

    Por lo como puedo ver, esa función parece estar bien. –

    +2

    ¿Su identificación realmente tiene espacios en ella? La especificación HTML dice que los ID no pueden tener espacios. Normalmente selecciona ID con '#'. Es decir. '$ (" # myID ")'. –

    +0

    ¿Por qué 'mousedown' y no' click'? tampoco se supone que los identificadores tengan espacios como ese, dudo que validen. Podría usar 'data' en su lugar ... – elclanrs

    Respuesta

    22

    Para selectores de nidos, se utiliza find:

    jQuery('#mySelectorId').find('.mySelectorClass') 
    

    Esto es lo mismo que hacer esto así:

    jQuery('#mySelectorId .mySelectorClass') 
    

    asegurándose de dejar un espacio entre. Sin el espacio que está seleccionando un elemento con ese ID y esa clase.

    también desean señalar que el código es, probablemente, no haciendo lo que creo que es:

    jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
        var container = $(this).width(); 
        var width_offset = -50; 
        var top_offset = 25; 
        var width = (container + width_offset).toString(); 
        jQuery(".mywidget").appendTo(document.body).css('width', width + 'px'); 
        jQuery(".mywidget").appendTo(document.body).css('position', 'absolute'); 
        jQuery(".mywidget").appendTo(document.body).css('top', ($(this).offset().top+top_offset).toString() + 'px'); 
        jQuery(".mywidget").appendTo(document.body).css('left', Math.round($(this).offset().left) + 'px'); 
    }); 
    

    Los últimos 4 jQuery(".mywidget") llamadas están agregando el widget para el cuerpo cada vez. Que realmente sólo quiere añadir una sola vez y cambiar el css para cada estilo:

    jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
        var container = $(this).width(); 
        var width_offset = -50; 
        var top_offset = 25; 
        var width = (container + width_offset).toString(); 
        jQuery(".mywidget").appendTo(document.body).css('width', width + 'px').css('position', 'absolute').css('top', ($(this).offset().top+top_offset).toString() + 'px').css('left', Math.round($(this).offset().left) + 'px'); 
    }); 
    

    que también puede ser reducida a una llamada css:

    jQuery("[id='A0.R0.Main Phone Number']").live('mousedown',function(e) { 
        var container = $(this).width(); 
        var width_offset = -50; 
        var top_offset = 25; 
        var width = (container + width_offset).toString(); 
        jQuery(".mywidget").appendTo(document.body).css({ 
         width: width + 'px', 
         position: 'absolute', 
         top: ($(this).offset().top+top_offset).toString() + 'px', 
         left: Math.round($(this).offset().left) + 'px'; 
        }); 
    }); 
    

    Nota, fuera de este, su identificación de no se supone que tenga espacios, de acuerdo con las especificaciones de HTML. Y, si tiene un documento de identidad válido, se selecciona de esta manera:

    jQuery("#A0.R0.Main_Phone_Number") 
    
    +0

    Si hay alguna forma de hacer esto? If (jQuery ("# A0.R0.Main_Phone_Number")) luego (haga mi otra llamada jQuery) ... – htmlfarmer

    +0

    ¿Qué quiere decir "otra llamada"? ¿Qué está tratando de lograr? –

    +0

    Ayudaría si describiera lo que su html está haciendo y lo que realmente quiere que suceda. –

    -4

    Si usted quiere hacer una llamada jQuery anidada puede hacerlo como lo siguiente ...

    $(document).ready(function(){ 
        $(document).ready(function(){ 
        // javascript code here... 
        }); 
    }); 
    
    +1

    Esta es una respuesta tan inapropiada. – Jason

    +0

    @Jason puede explicar por qué para los que no están informados como yo – Eoin

    Cuestiones relacionadas