2011-12-12 14 views
12

Nei miei moduli HTML (come nella maggior parte dei moduli HTML), le etichette condividono gli stessi ID dei campi. Sto cercando di tornare all'HTML del tag label dopo aver fatto clic sulla casella di controllo con un ID corrispondente.jQuery dato ID di input, ottieni il testo dell'etichetta

<input id="yes1" type="checkbox"> 
<label for="yes1">This is the text it should return.</label> 

E il mio jQuery:

$('input').change(function() { 
    if (this.checked) { 
     var response = $('label#' + $(this).attr('id')).html(); 
    } 
} 

Ma, ahimè, la risposta viene fuori come NULL.

+0

siete alla ricerca fino 'etichetta # yes1', ma non c'è oggetto che corrisponde a quello di selezione. – jfriend00

risposta

30
$('input').change(function() { 
    if (this.checked) { 
     var response = $('label[for="' + this.id + '"]').html(); 
    } 
}); 

Non c'è bisogno di ottenere l'id dall'attributo .

Demo: http://jsfiddle.net/wycvy/

-2

la sintassi era un po 'wacked, provare a impostare il codice HTML in questo modo

<input id="yes1" type="checkbox" /> 
<label for="yes1" id="yes1-label">This is the label</label> 

e quindi utilizzare jQuery in questo modo

$("#yes1").click(function() { 
if ($("#yes1").is(":checked")) { 
    /* it's not really clear what you are trying to do here */ 
    var response = $("#label").attr("id"); 
    $("#yes1-label").text(response); 
} 
}); 
0

qui è l'esempio di base secondo il vostro requisito. Hai bisogno del contenuto html dall'etichetta accanto alla tua casella di controllo, se è selezionato.

uso questo

HTML

<div> 
<form > 
<input type="checkbox" id="yes" /><label for="yes">text yes </label> 
<input type="checkbox" id="no" /><label for="no">text no</label> 

</form> 


</div> 

jQuery

$('input').change(function() { 
     if (this.checked) { 
      var response = $(this).next("label").html(); 
      alert(response); 
     } 
    }) 
Problemi correlati