2011-10-24 30 views
5

Estoy usando el bookmarklet jQueryify en una página para poder llamar a las funciones de jQuery desde la consola. Pero cada vez que invocar una función de jQuery en un objeto seleccionado, me sale el error:jQuery en la consola no funciona correctamente

"TypeError: jQuery("li")[0].children[0].html is not a function 
[Break On This Error] jQuery('li')[0].children[0].html(); 

He intentado esto en FireBug, así como la consola Webkit de Google Chrome.

+0

Usted está haciendo clic en el bookmarklet, ¿correcto? ¿Puede vincular el bookmarklet que está utilizando y una página de ejemplo con lo que ingresa? – Whetstone

+0

Acabo de confirmar esto en una página que ya está cargando jQuery, así que no creo que sea solo el bookmarklet FYI. – HurnsMobile

Respuesta

9

Ya no está trabajando con objetos jQuery utilizando corchetes.

jQuery("li")[0] 

Esto le devuelve la primera li como DOMElement, no un objeto jQuery.

jQuery("li")[0].children[0] 

Esto devuelve el 1er li 's primero como un niño DOMElement, no un objeto jQuery.

.html() 

Esta función solo funciona para objetos jQuery. Para DOMElements, puede usar la propiedad .innerHTML.

Sugiero que en lugar de ocuparse de DOMElements, debe continuar trabajando con objetos jQuery. Intente utilizar esto en su lugar:

jQuery('li').eq(0).children().eq(0).html() 
+0

+1, muy buen ejemplo – JaredPar

+0

¿Por qué votar abajo? ** EDIT **: veo por qué. 'children (0)' debería haber sido 'children(). eq (0)'. Corregido :-P –

+1

@Rocket era mi voto negativo. Lo siento, solo un error. +1 por el problema! – genesis

3

intente seguir

jQuery(jQuery("li")[0].children[0]).html(); 

o mejor una

jQuery("li:eq(0)").children(':eq(0)').html(); 

u otro

jQuery("li:eq(0)").children().eq(0).html(); 

aunque éste funcionará

jQuery("li").eq(0).children().eq(0).html(); 
+0

No, '[0]' devuelve un objeto DOM. – pimvdb

+0

El error es sobre 'html' no' children' – JaredPar

+0

'jQuery (" li ") [0]' es un elemento DOME, no un objeto jQuery, y por lo tanto no tiene la función 'children()'. –

5

Parece que está intentando llamar a una función jQuery, html, en un objeto DOM children[0]. Trate de envolver que en un objeto jQuery y luego llamar html

var temp = jQuery("li")[0].children[0]; 
var html = jQuery(temp).html(); 
+2

@genesis sí, es una propiedad DOM. https://developer.mozilla.org/en/DOM/Element.children – JaredPar

5

comprobar el resultado de jQuery("li")[0].children[0], es un objeto DOM NO regular de un objeto jQuery. Sin ver el código HTML no puedo recomendar un selector de mejor, pero una solución barata y sucia sería

jQuery(jQuery('li')[0].children[0]).html();

Esto convertirá resultado el objeto DOM en un objeto jQuery que tiene la función .html().

+0

¡Gracias! eso tiene sentido y funciona ahora! –

3

Accediendo a los elementos de la matriz en el objeto jquery (usando []) se devuelve un elemento DOMElement, que obviamente no tiene los métodos de jquery. Probablemente desee utilizar eq() en su lugar.

Cuestiones relacionadas