Quel serait le meilleur moyen de balayer tous les DOM, trouver un élément qui a du texte et l'envelopper dans une classe d'envergure? ThanxJquery trouver tous les éléments avec du texte
Répondre
Pour envelopper tous les nœuds de texte qui contiennent autre chose que simplement des espaces:
$('body *').contents().filter(function() {
return (this.nodeType == 3) && this.nodeValue.match(/\S/);
}).wrap("<span />")
Pour envelopper tous les nœuds de texte, y compris ceux qui ne contiennent que des espaces:
$('body *').contents().filter(function() {
return (this.nodeType == 3) && this.nodeValue.length > 0;
}).wrap("<span />")
Voir ce code en action à: http://jsbin.com/oquhu3/3 (celui * avec * espace) –
Thanx, ça marche! J'ai essayé d'ajouter une classe mais ça n'a pas marché. $ (function() { $ ('body *'). Contents(). Filter (fonction() { return (this.nodeType == 3) && this.nodeValue.length> 0; }). AddClass ("someclass"); }); Une idée pourquoi? Merci encore. – Mircea
Vous ne pouvez pas ajouter de classe à un nœud de texte. Essayez de l'encapsuler avec un span qui a une classe: $ ('body *'). Contents(). Filter (function() { return (this.nodeType == 3) && this.nodeValue.length> 0; }) .wrap ("
Vous pouvez utiliser .each itérer sur tous elememnts:
$('*').each(function(){
if($(this).text())
{
$(this).wrapInner('<span />');
}
})
Je n'ai pas testé ce morceau de code, mais il est assez simple. Tout ce que vous devez savoir sur est .chacun, wrapInner et * sélecteur. jQuery docs est assez utile ici.
On dirait qu'il reste du travail: http://jsbin.com/oquhu3 –
essayez d'ajouter $ (document) .ready(); à votre code: $ (document) .ready (function() { $ ('*'). chaque (fonction {} ( if ($ (this) .text()) { $ (this) .wrapInner (''); ) )) }) – dzida
Je pense que cela va ajouter de la classe à tous les éléments HTML, qu'ils aient du texte ou non. – Mircea
- 1. jquery supprimer tous les éléments enfants et laisser du texte
- 2. Jquery sélectionner tous les éléments contenant du texte ID
- 3. trouver des éléments avec jquery
- 4. Trouver tous les éléments d'une région
- 5. Prototype: trouver tous les éléments avec une certaine classe?
- 6. Trouver tous les éléments sur la base ids utilisant l'expression rationnelle du sélecteur jQuery
- 7. Comment trouver tous les nœuds de texte entre les nœuds d'éléments avec Javascript/JQuery?
- 8. Trouver plus haut z-index de tous les éléments
- 9. Trouver tous les objets avec l'association brisée
- 10. sum tous les éléments d'entrée dans jquery
- 11. jquery: comment sélectionner tous les autres éléments?
- 12. jquery obtenir que tous les éléments html avec ids
- 13. Obtenir texte imbriqué dans les éléments jQuery
- 14. Jquery: Comment trouver du texte dans textarea
- 15. Sélection de tous les éléments
- 16. fusion 2 collections et trouver tous les éléments uniques
- 17. jquery, sélecteur, trouver, texte
- 18. Meilleur moyen de trouver tous les éléments avec un nom de classe
- 19. Comment puis-je multiplier tous les éléments d'une collection avec tous les éléments d'une autre collection?
- 20. Désactiver tous les A (URL) éléments DIV
- 21. jQuery trouver et remplacer du texte dans une variable
- 22. sélection jquery pour l'effondrement tous les éléments ul moins un
- 23. Comment puis-je trouver tous les Guids dans un texte?
- 24. jquery pour trouver tous les éléments à l'intérieur d'une balise div
- 25. Comment trouver tous les éléments qui n'ont pas de classe CSS spécifique dans jQuery?
- 26. Comment trouver tous les éléments qui ont un attribut title en utilisant jQuery?
- 27. jQuery: trouver tous les parents jusqu'à un parent spécifique
- 28. Comment masquer tous les éléments sauf un en utilisant jquery?
- 29. Obtenir tous les liens mailto avec jQuery
- 30. Comment trouver l'emplacement du texte avec Selenium?
Je pense que vous avez besoin de préciser ce que tu veux dire avec 'n'importe quel élément qui a du texte'. Voulez-vous dire des éléments qui contiennent du texte autre que des espaces blancs, mais pas des éléments enfants? –