Esto funciona para mí (me estaba usando jQuery Mobile):
var value = $(":radio[name=location]:checked").val();
var text = $(":radio[name=location]:checked").prev("label").text();
El DOM para esto:
<div id="locations" data-role="controlgroup" class="ui-controlgroup ui-controlgroup-vertical ui-corner-all">
<div class="ui-controlgroup-controls ">
<div class="ui-radio">
<label for="location0" class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off ui-first-child">1439</label>
<input type="radio" name="location" id="location0" value="1439">
</div>
<div class="ui-radio">
<label for="location1" class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off ui-last-child">1440</label>
<input type="radio" name="location" id="location1" value="1440">
</div>
</div>
</div>
y si el orden de los elementos html cambia, estás jodido :-) – Natrium
Y ¡esto siempre selecciona la primera etiqueta en orden DOM, no la siguiente! – Victor
@Victor, tienes razón. Gracias por señalar esto. He actualizado mi respuesta. –