jquery - Selector

Seth93

Well-known member
ID: 322821
L
24 November 2008
1.400
82
Hallo,

ich hab eine Frage über den Selector von jQuery.
Wenn ich ihn anwende um z.B. alle b-Elemente zu bekommen, erhalte ich ein Array.
Wenn ich jetzt gezielt ein b-Element ansprechen will, kann ich keine Funktionen von jQuery mehr darauf anwenden.

Beispiel:
Code:
$("b")[0].html();

Gibt s da einen Trick, wie ich ein Element gezielt ansprechen kann und trotzdem noch die Funktionen anwenden kann?

Lg
 
Super, genau das hab ich gesucht :D
Gibt s n Grund warum es eq() heißt?

Wenn ich eine Seite mit jQuery per Ajax lade, dann funktionieren die ganzen Funktionen nicht mehr auf die geladenen Elemente.
Man muss vermutlich irgendwas mit eval() machen?
Aber es klappt nicht:

Code:
$("#bla").click(function(){
    $.post( url, '',
      function( data ) {
          var content = $(data).find('#content');
          $( "#content" ).empty().append( content );
      }
    );
});
Der geladene Inhalt enthält einen Link mit der ID "bla", sodass man erneut raufklicken kann. Dann wird aber kein Ajax-Request mehr abgesendet.

Lg


EDIT:
Wenn ich dataType: 'script' anhänge, dann geht es zwar, aber der Seiteninhalt wird nicht mehr in den Div-Container geladen.
 
Zuletzt bearbeitet:
Das ist deswegen so, da jQuery einmal alle Elemente deines Selectors durchgeht, und das Event anhängt.

Wenn ich mich recht erinnere, dürfte live() genau das sein, wonach du suchst.
 
Gibt s n Grund warum es eq() heißt?
Ja. Weil du damit das Element "im Array selektierst, dessen Index gleich 0 ist".
Es gibt auch gt() und lt(), um z.B. nur die ersten 4 Zellen einer Tabellenzeile zu selektieren oder jeden Absatz nach dem 5. Absatz rot zu färben.

Wenn ich eine Seite mit jQuery per Ajax lade, dann funktionieren die ganzen Funktionen nicht mehr auf die geladenen Elemente.
s. Post über mir oder EventHandler von Hand nochmal neu registrieren für die Elemente, die hinzugekommen sind.

Was mir auffällt: Du hängst einen Teil des DOM-Trees aus der AJAX-Response direkt in den DOM-Tree der aktuellen Seite. Afair meckert der IE da. Hast du es im IE getestet?
Wenn du mit dem Probleme kriegst, probier mal
Code:
$("#content").empty().append(content[B][COLOR=Red].html()[/COLOR][/B]);