2011-06-15 12 views
7

De un grupo de elementos span, quiero obtener los valores de la primera aparición de un span que no está vacío.Seleccione el primer elemento span que no esté vacío

tengo este código HTML

<span class="map_multi_latitude"></span> 
<span class="map_multi_longitude"></span> 
<span class="map_multi_latitude">30.201998</span> 
<span class="map_multi_longitude">120.990876</span> 

tengo este Jquery antes, pero quiero hacer que funcione de tal manera que "el primer patrón cuyo texto no está vacío":

initialLat = $('span.map_multi_latitude:first').text(); 
initialLng = $('span.map_multi_longitude:first').text(); 

gracias de antemano !

Respuesta

13

Esto funcionará:

$('span:not(:empty):first').text() 

o estos:

$('span:not(:empty):eq(0)').text() 
$('span:not(:empty)').eq(0).text() 
$('span:not(:empty)').slice(0,1).text() 
$('span:not(:empty)').first().text() 
+0

esto parece sólo funciona si hay más de uno vanos, que no están vacías. si solo hay un tramo que no está vacío, esto falla – yretuta

+0

@Ygam: Funciona bien con un tramo no vacío. Tenga en cuenta que el vacío significa realmente vacío. En otras palabras, no hay espacio en blanco. – user113716

+1

Se puede usar una función de filtro personalizada para descartar elementos que no contienen nada o espacios en blanco solamente: '$ ('span'). Filter (función() {return $ (this) .text(). Trim()}). First() .text() ' – CoDEmanX

2
initialLat = $('span.map_multi_latitude:not(:empty):first').text(); 
initialLng = $('span.map_multi_longitude:not(:empty):first').text(); 
+0

esto parece funcionar solo si hay más de un tramo que no está vacío. si solo hay un tramo que no está vacío, esto falla – yretuta

+0

Debería funcionar independientemente del número de elementos. Verifíquelo http://jsfiddle.net/2B3PU/ –

0
var firstMapMultiLatitude; 
$('.map_multi_latitude').each(function (index, element) { 
    if ($(element).val() != '') { 
     firstMapMultiLatitude = $(element).val(); 
     alert($(element).val()); 
     return; 
    } 
}); 
Cuestiones relacionadas