2010-01-19 6 views
1

je savoir si cela est un bug ... Quand je contenu html alerte de #test, je reçois:jquery et la saisie de texte

<input name="sum" value="" type="text"> 

alors qu'il a été fixé à 55 juste avant l'alerte, et je peut le voir sur le navigateur.

Pouvez-vous me dire pourquoi? :-)

<div id="test"> 
    <input type="text" name="sum" value=""> 
</div> 

<script language="javascript"> 
$(document).ready(function() { 
    $("#test").find("input[name='sum']").val(55); 
    alert($("#test").html()); 
}); 
</script> 
+0

Bienvenue dans StackOverflow, Tom! – Sampson

+0

Merci Jonathan! – Tom

Répondre

1

Ce n'est pas un bug. La valeur de #test ne fait pas partie du contenu HTML de l'entrée - elle a été définie après l'insertion de l'élément dans le DOM - et donc la fonction html() ne le renvoie pas.

+0

Ok merci, je pensais que la fonction html() changerait en fonction des mises à jour des enfants ... – Tom

+0

Si vous aviez ajouté plus d'éléments (par exemple) dans la div, html() les retournerait, mais changer les valeurs d'attribut n'est pas reflété. Je pense. – eliah

+0

Existe-t-il un moyen de voir à quoi la source ressemble vraiment? Merci! – Tom

3

Javascript ne modifie pas le balisage physique sur la page. Cela change le DOM. Le DOM est construit à partir du balisage, mais après, le balisage n'est pas crucial.

Vous ne voulez pas alerter le HTML, vous souhaitez alerter la valeur de l'entrée:

alert($("#test :input[name='sum']").val()); 

Questions connexes