2012-09-05 4 views
3
if($("#target").html().trim().length>0){do sth} 

il est bizarre que je suis l'erreur dit Uncaught TypeError: Impossible de lire la propriété « longueur » undefined et dans le code HTML j'aierreur bizarre de Jquery

<div id="target"><table><tr><td>ABC</td></tr></table></div> 

Et la question bizarre est si je fais le console.info($("#target").html().trim().length), il me dira un certain nombre.

et la chose la plus bizarre que j'ai trouvé la seule façon d'éviter cette erreur est de modifier le contenu html

<div id="target">ABC</div> 

sans la table html, il ne jeter que errow

+2

vous souvenez-vous de mettre votre code dans un gestionnaire '$ (document) .ready()'? – Alnitak

+1

depuis quand "trim()" est-il une fonction de surcharge de chaîne valide? c'est peut-être nouveau, mais je sais seulement utiliser jQuery.trim (STRING); et ainsi - vérifier la sortie de "trim()" à la fin de la chaîne avec "console.log" s'il vous plaît – TheHe

+0

oui, je les ai mis en – john

Répondre

1

essayer d'utiliser innerHTML ou innerText directement à la place de Jquery

+0

Oh oui comme ça ça marche pour html – john

4

changer votre $("#target").html().trim().length

à

$("#target").text().trim().length 

check thi s jsfiddle, vous obtenez la longueur 51, parce qu'il donne la longueur html entre <div> tag

.html()

Get the HTML contents of the first element in the set of matched elements.

.text()

Get the combined text contents of each element in the set of matched elements

+0

cela fonctionne, mais parfois je veux juste comprendre le code HTML plutôt que le texte – john

+0

@john, vous pouvez essayer la longueur «InnerHtml» pour la longueur html. –

+0

@Furqan mais la question a été tagguée jquery :-) – Sibu