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

    Esiste comunque un selettore jQuery annidato.Selettori jQuery annidati

    Ad esempio:

    se la pagina ha anche un ID = "LeadEditForm_Title" da qualche parte su di esso quindi effettuare le seguenti ...

    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'); 
    }); 
    

    DOMANDA:

    Come posso fare una se jQuery(".LeadEditForm_Title") poi fare quanto sopra ??? fondamentalmente un jQuery chiamata annidata ... Ho visto esempi in cui hanno:

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

    Ma voglio che dipendono dal ID ".LeadEditForm_Title".

    +0

    Per quanto come posso dire, questa funzione sembra soddisfacente. –

    +2

    Il tuo ID ha davvero degli spazi? Le specifiche HTML dicono che gli ID non possono avere spazi. Normalmente si selezionano gli ID con '#'. Cioè '$ ("# MyID")'. –

    +0

    Perché 'mousedown' e non' click'? anche gli id ​​non dovrebbero avere spazi del genere, dubito che lo convalideranno. Potresti usare 'data' invece ... – elclanrs

    risposta

    22

    Per selettori nidificare, si utilizza find:

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

    Questo è lo stesso di fare anche questo:

    jQuery('#mySelectorId .mySelectorClass') 
    

    Essere sicuri di mettere uno spazio tra. Senza lo spazio si seleziona un elemento con quell'ID e quella classe.

    Vorrei anche notare che il codice non è probabilmente facendo quello che si pensa che è:

    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'); 
    }); 
    

    Gli ultimi 4 jQuery(".mywidget") chiamate stanno aggiungendo il widget per il corpo ogni volta. È davvero solo da aggiungere una volta e cambiare il css per ogni stile:

    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'); 
    }); 
    

    che può anche essere ridotto a chiamata uno 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, al di fuori di questo, il vostro ID non dovrebbe avere spazi, secondo le specifiche HTML. E, se si dispone di un documento di identità valido, è necessario selezionare in questo modo:

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

    Se c'è comunque da fare questo? If (jQuery ("# A0.R0.Main_Phone_Number")) quindi (esegui un'altra chiamata jQuery) ... – htmlfarmer

    +0

    Cosa intendi per "altra chiamata"? Che cosa stai cercando di ottenere? –

    +0

    Sarebbe utile se tu descrivessi cosa sta facendo il tuo codice HTML e cosa vuoi realmente accadere –

    -4

    Se si vuole fare un jQuery nidificato chiamata si può fare come il seguente ...

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

    Questa è una risposta così inappropriata. – Jason

    +0

    @ Jason puoi spiegare il motivo per il non informato come me – Eoin

    Problemi correlati