jQuery: Elemente mit Tags und Attributen selektieren

N

Netzwerkidi

Hallo,

ich würde gerne nicht nur den Textknoten selektieren wie im Moment, sondern alles, also Tags und Attribute (LI, Class...) .
Ist nicht ein Unterschied zwischen html() und text()?

Grüße

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>        
  <head>              
    <title>        
    </title>              
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />              
    <meta http-equiv='Content-Language' content='de-DE' />              
    <meta name='keywords'    content='' />              
    <meta name='description' content='' />               
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>                    
  </head>        
  <body>           
    <ul id="test"> 
    <li class="mcl">-- LI 1 --</li>
    <li class="mcl">-- LI 2 --</li> 
    <li class="mcl">-- LI 3 --</li>                
    </ul>	
    <textarea rows="5" cols="30"></textarea> 
         
    <script type="text/javascript">
  
    $('#test li').each(function() {
      $('body textarea').append($(this).html()+'<br>');
    });
  
    </script>       
  
  </body>
</html>
 
Hi Idi,

kannst du nochmal erklären was du genau willst, was meinst du mit Attribute und Klassen selektieren, sie einfach auslesen? Oder anhand von Klassen und Attributen bestimmte Elemente selektieren?

VG,
Guillermo
 
Hi Guillermo,

ich will alle Listsätze - Tag: LI - einzeln verarbeiten.

Dazu selektiere ich sie mit:
Code:
$('#test li').each(function() {
Aber statt nur den reinen Text zu erhalten,
Code:
-- LI 1 --
will ich den gesamten HTML-Code haben, also im Beispiel:
Code:
<li class="mcl">-- LI 1 --</li>
Im Grunde also html() statt text().
Ich kriege es mit jQuery einfach einfach nicht hin, obwohl es wahrscheinlich deppeneinfach ist.


BG
Idi
 
Zuletzt bearbeitet von einem Moderator:
Hi Idi,

beim IE gibts sogar eine Eigenschaft outerHTML in der der Quelltext des Elements gespeichert ist, bei den restlichen Browsern aber nicht. Eine vorhande jQuery Funktion gibts nicht, dieser Umweg über eine eigene Funktion sollte aber das machen was du willst:

Code:
jQuery.fn.outerHTML = function() {
	return $('<div>').append( $(this).eq(0).clone() ).html();
}

Jetzt kannst den Quelltext in deiner Schleife einfach per
Code:
$(this).outerHTML()
auslesen.

Viele Grüße,
Guillermo
 
Zuletzt bearbeitet:
Hi,

ja, genau das habe ich gesucht, tausend Dank! Ist das eine so ungewöhnliche Funktion, dass sie nicht im Standardumfang enthalten ist?
Klappt übrigens auch ohne "eq(0)".

Beste Grüße
Idi
 
Zuletzt bearbeitet von einem Moderator:
Ich persönlich habe so eine Funktionalität noch nie gebraucht, aber wenn du der Meinung bist dass es eine sinvolle Funktion ist könntest du es ja auf der jQuery Seite vorschlagen :).

Wenn ich es richtig interpretiert habe gibt es für das was du da oben machen willst auch eine einfachere Variante:

Code:
 $('body textarea').html($("#test").html());

Viele Grüße,
Guillermo
 
Wie gesagt, ich muss jeden Satz separat haben, weil ich ihn ggf. noch bearbeiten muss.
 
@all
Jetzt mal Butter bei die Fische: Wer hat selbst schon einmal etwas Vergleichbares kreiert?
Immer, wenn ich denke, ich hätte etwas verstanden, zack, bekomme ich direkt wieder einen drüber gebraten.
 
Zurück