2012-06-21 13 views
7
<div id="cardSlots"> 
<div class="ui-droppable" tabindex="-1" id="card1">one</div> 
<div class="ui-droppable" tabindex="-1" id="card2">two</div> 
<div class="ui-droppable" tabindex="-1">three</div> 
<div class="ui-droppable" tabindex="-1">four</div> 
</div> 

<script> 
    $(".ui-droppable").each(function() {  
     if($(this).attr("id").length>0) 
     { 
     alert('here'); 
     } 
    }); 
</script> 

Estoy tratando de recorrer la clase pero el problema es que tengo identificaciones card1 y card2 duplicadas en esa página. pero el código anterior parece funcionar pero muestra el siguiente error.cómo verificar si div tiene id o no?

Uncaught Type Error: Cannot read property 'length' of undefined 

Estoy tratando de obtener los identificadores del ciclo que están allí.

+0

espero que esto no lo hace suena grosero, pero creo que deberías aprender más e acerca de JavaScript, antes de saltar a jQuery – vol7ron

+0

jQuery es una paradoja extraña.Está configurado para facilitar la programación de JavaScript, lo que lo hace ideal para principiantes; sin embargo, sigue siendo JS y, por lo tanto, un usuario debería estar familiarizado con al menos las interacciones nativas de objetos de JavaScript (propiedades/llamadas a métodos) – vol7ron

Respuesta

13

selector de Uso atributoselector[attribute] para obtener sólo los elementos que tienen un ID

$('.myClass[id]') // Get .myClass elements that have ID attribute 

En su caso:

$('.ui-droppable[id]').each(function(){ 
    alert(this.id); 
}); 

jsFiddle demo

+2

Esta es también una buena respuesta, que responde a lo que la pregunta estaba buscando, pero no necesariamente preguntando – vol7ron

2

Si no hay id, el método attr devolverá undefined. Sólo tiene que escribir:

if($(this).attr("id")) 
-2
var $this = $(this); 
if (typeof $this.attr("id") != "undefined" && $this.attr("id").length > 0) { 
    ... 
} 

Si usted va a utilizar $(this) más de una vez, es aconsejable para encontrar una vez, y poner el objeto jQuery que resulta en una variable local.

12

if(this.id) es todo lo que necesita.


¿Por qué es que esto funciona?

Si el elemento tiene una ID, el valor será una cadena no vacía, que siempre se evalúa como true.
Si no tiene una ID, el valor es una cadena vacía que evalúa a false.


estoy tratando de conseguir las identificaciones del bucle que están allí.

Para obtener una lista de ID, puede utilizar .map así:

var ids = $(".ui-droppable").map(function() {  
    return this.id ? this.id : null; 
}).get(); 

o utilizar el selector de Roko suggests in his answer.

+0

+1 como la mejor respuesta – vol7ron

+0

la alternativa descriptiva: 'if (this.id && this.id.length > $ somenum) ' – vol7ron

1
if(typeof $(this).attr("id") != 'undefined') 
+1

¿Qué pasa si' id = "" '? –

Cuestiones relacionadas