2011-04-08 10 views
5

Así que la pura verdad es que yo no sé ni qué términos me busco para obtener un resultado de búsqueda razonablemente apuntado para esto, así que pensé que espero una rápida respuesta aquí. Las búsquedas que he intentado (incluidas las preguntas relacionadas con SO) no han mencionado este problema en particular.jQuery selector # id.classname en IE7

Cada navegador en mi arsenal comprende lo siguiente selector de jQuery y alertas de la longitud adecuada (2):

alert(jQuery('#course-contents.course-sidebar .folder').length); 

Pero no IE7. Me dice que hay cero. Por otro lado, esto:

alert(jQuery('.course-sidebar .folder').length); 

Me da un resultado de 2 en ambos lugares. ¿De qué se trata la combinación que le está dando IE7? Ambos componentes son necesarios en algunos lugares, por lo que no quiero simplemente cambiarlo. Si mi sintaxis es poco clara, me gustaría saber por qué.

Gracias.

Respuesta

2

Es un documentado IE6/7 error (de nuevo ...), como @Peter sugerido.

Para solucionar este problema, es posible utilizar

jQuery('.course-sidebar') 
    .filter('#course-contents') 
    .find('.folder') 
    .length 

o (usando context, menos legible)

jQuery('.folder', jQuery('.course-sidebar').filter('#course-contents')).length 
+0

Gracias. Respuesta dada aquí para la solución. Muy apreciado. –

+0

Guau, una pena que tales cosas sigan siendo necesarias, ¡pero gracias por esto! – markus

6

El primer encendido es por supuesto un selector más estricta: sólo las clases bajo la etiqueta de identificación se toman en cuenta, esto no es compatible con Internet Explorer 7 (o IE6, para el caso)

El segundo selector es sobre todo los niños de la barra lateral del curso de la clase, independientemente de dónde aparezcan.

De hecho, IE tiene un problema con el selector # ID.class:

http://bytesizecss.com/blog/post/the-idclass-selector-in-ie6

http://csscreator.com/node/26521

http://code.google.com/p/ie7-js/issues/detail?id=29

+0

+1 para un gran material de lectura. –