2009-08-12 5 views

Répondre

5

.html() va retourner le innerHTML - qui englobera tous les A balises à l'intérieur, vous pourrez peut-être faire quelque chose comme ça si:

// clone the matched div: 
var copy = winner.clone(); 
// remove all A tags from the DOM 
copy.find("a").remove(); 
// get the html. 
var noanchors = copy.html(); 

également - Si vous voulez obtenir le texte dans le A encore - mais pas a lui-même - vous pouvez utiliser:

// for each A tag 
copy.find("a").each(function() { 
    //insert the text within ourselves to the document directly before us. 
    $(this).before($(this).text()); 
    // then delete ourselves 
    $(this).remove(); 
}); 

Bien que cela puisse réellement obtenir un peu désordonné si le <a> a d'autres balises dans - il devrait illustrer l'idée.

+0

Merci, clone() est parfait dans cette situation. Pourquoi je n'y ai pas pensé? Et par votre deuxième bloc de code, c'est utile pour le prochain peu de logique que j'ai besoin d'écrire. –

0

C'est possible mais cela ne vous donnera pas le résultat attendu. not('a') va filtrer les tags a de votre collection winner mais html() vous renverra la valeur du premier article de la collection.

donc si votre winner a [div#i1 div#i2 a div#i3 a], not('a') réduira cet ensemble à [div#i1 div#i2 div#i3] et html() retournera le contenu HTML de div#i1. Si vous voulez supprimer des ancres de HTML, je pense que vous devriez d'abord obtenir est en utilisant la méthode .html(), puis faites un remplacement sur la valeur retournée avec une expression régulière qui va dépouiller les ancres.

0

Sinon, vous pouvez utiliser quelque chose comme ceci:

var noanchors = ''; 
winner.not('a').each(function() { noanchors = noanchors + $(this).html();) 

pour obtenir la concaténation des non un code HTML des éléments. Cependant, ceci peut manquer n'importe quel texte de niveau supérieur entre les divers éléments inclus par étiquette.