11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'essaye avec jQuery d'effacer "ici du texte", mais je n'y arrive pas.
Voilà le code :


<div class="cl">
    <h3>test</a>
    ici du texte // texte a supprimer
    <a href="lien">un lien </a>
</div>


Donc j'aimerais virer le texte "ici du texte".

$(".cl").text().remove();

Ce code m'enleve aussi le texte de <h3>

Le problème ici est que "ici du texte n'a pas de balise".
Est ce faisable ?

Merci d'avance
Modifié par alien7 (07 Feb 2010 - 00:47)
Salut,

je ne sais pas si ça existe nativement dans jQuery mais pourquoi ne pas rajouter un SPAN ?
<div class="cl"> 
    <h3>test</h3> 
    <span>ici du texte</span>
    <a href="lien">un lien </a> 
</div> 
Bonjour,

Heyoan parlait de rajouter un élément SPAN dans la source HTML, pas après coup en JavaScript.

Si ce n'est pas possible, la solution est d'utiliser les méthodes DOM directement, et pas les raccourcis fournis par jQuery.

Un petit test:
<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Test</title>
  
</head>
<body>

<div class="test"> 
  <h3>Un titre</h3> 
  ici du texte // texte a supprimer 
  <a href="#">Un lien</a> 
</div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  var container = $('.test')[0];
  container.removeChild(container.childNodes[2]);
})
</script>

</body>
</html>
Florent V. a écrit :
Bonjour,
Heyoan parlait de rajouter un élément SPAN dans la source HTML, pas après coup en JavaScript.


Bah j'ai relus sa phrase plusieurs fois et meme la je pense qu'il parlait de le faire avec jquery.

Sinon ca ne marche pas le code.

Bon pas grave je vais demander à ce que l'on mette des balises.

Merci encore
Modifié par alien7 (06 Feb 2010 - 22:22)
alien7 a écrit :
Bah j'ai relus sa phrase plusieurs fois et meme la je pense qu'il parlait de le faire avec jquery.
C'est vrai qu'en me relisant ça n'est pas limpide ! Smiley lol

Donc ce que j'aurais du écrire c'est : "je ne sais pas si ce que tu veux faire existe nativement dans jQuery mais pourquoi ne pas rajouter un élément SPAN dans le code html pour le cibler simplement ?"
alien7 a écrit :
Mais bon quand vous n'avez pas la main sur le code, c'est difficile hein
Ça n'aide pas !

Sinon le code de Florent marche bien... mais pas avec IE (à priori une différence avec childNodes).

Il y a sûrement mieux à faire mais le code suivant semble fonctionner partout :
$(document).ready(function(){
	var lContainer = $('.test')[0].childNodes;
	lContainer[1].nodeValue = '';
	lContainer[2].nodeValue = '';
}) 

Modifié par Heyoan (07 Feb 2010 - 00:17)
Bonsoir,

Sans réfléchir, je me tournerais vers le nodeType avec contents ?

En reprenant l'exemple de la doc JQuery, ça donnerait un truc comme ça :


$('.cl').contents().filter(function() {
  return this.nodeType == 3;
})
.remove();


Mais je n'ai pas testé, je ne suis pas certaine non plus de ce qu'englobe exactement TEXT_NODE.
Modifié par mistike (07 Feb 2010 - 00:27)
mistike a écrit :
Bonsoir,

$('.cl').contents().filter(function() {
  return this.nodeType == 3;
})
.remove();



Impec ca marche ce code Smiley cligne

Un grand merci à tous.
Bien vu. Smiley cligne


Edit: si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne
Modifié par Heyoan (07 Feb 2010 - 00:46)