Mon div se ferme.

<html><head><title></title>
<script type="text/javascript" charset="utf-8" src="jquery-1.7.min.js"></script>
<script>

$(document).ready(function(){   
        $("#wrapper").append( '<div id="content"><br>test');
        $("#wrapper").append('<br>whatever');
        $("#wrapper").append( 'sfga<br></div>' );
});
</script>

</head><body>

<div id="wrapper">
</div>

</body></html>

Le div se ferme automatiquement après la sortie de test et non après sfga comme il se doit.

Comment régler ceci?

1
David19801 6 nov. 2011 à 17:38

3 réponses

Meilleure réponse

Correction sale:

var sHTML = '<div ="content"><br>test<br>whateversfga<br></div>';
$("#wrapper").append(sHTML);

Façon appropriée de le faire:

var oNewDiv = $('<div id="content">').append('<br />').append('test');
$("#wrapper").append(oNewDiv);

Pourquoi ça arrive? Parce que jQuery crée automatiquement des éléments DOM appropriés lorsqu'il reçoit du HTML brut, tout en vous permettant de les ajouter avec le chaînage ci-dessus.

2
Shadow Wizard is Ear For You 6 nov. 2011 à 13:41

Vous travaillez sur un DOM, pas sur un flux de texte.

Malgré l'abstraction que jQuery fournit, vous ne pouvez traiter qu'avec des éléments, pas avec des balises.

 var html = '<div ="content"><br>test' +
            '<br>whatever') + 
            'sfga<br></div>';
 $("#wrapper").append(html);

(notez que <div ="content"> est un non-sens, mais je n'ai aucune idée de ce que vous entendiez par là donc je n'ai pas essayé de le réparer).

1
Quentin 6 nov. 2011 à 13:41

Pourquoi ne pas combiner ces trois append appels?

$(document).ready(function(){   
    $("#wrapper").append( '<div ="content"><br>test<br>whateversfga<br></div>' );
});

Si vous avez besoin de mettre d'autres choses à l'intérieur du div, vous pouvez créer un nouveau div puis y ajouter d'autres éléments, en faisant quelque chose comme ceci:

$(document).ready(function(){   
    var $newElem = $('<div class="content"></div>');
    $newElem.append($('<p>test<br />test</p>'));
    $("#wrapper").append($newElem);
});
1
davidscolgan 6 nov. 2011 à 13:44
8027347