jquery: html()

  • Themenstarter Themenstarter Netzwerkidi
  • Beginndatum Beginndatum
N

Netzwerkidi

Hallo,

gibt es keine Möglichkeit, mit jQuery den HTML-Inhalt eines Elements inklusive seiner eigenen Attribute und Eigenschaften zu selektieren außer so umständlich wie im Beispiel?
Man stelle sich vor, es gibt außer dem class-Attribut vielleicht noch zig andere...

HTML:
<div class="featured">
  <a href="http://meineDomain.com/meineSeite.html" target="_blank">MeinText</a>
</div>

Code:
$('div.featured').each(function (i, e) {
    alert($('<div class=\"featured\">').append($(e).clone()).html());
});

LG
Peter
 
Hi

etwas in die Richtung?

Javascript:
$('div.featured').each(function (i, e) {
    alert($(e).clone().wrap('<div/>').parent().html());
});
 
Hej,

im Prinzip ja, aber ganz offengestanden war ich schon der Meinung, das jQuery doch etwas total Simples anzubieten haben müsste, das ich bisher nur nicht gefunden habe, so was in der Art wie outerhtml oder so.

Dein Beispiel bringt übrigens ohne clone() genau dasselbe Ergebnis; man kann es also weglassen, wenn ich das richtig sehe.

Was genau macht das wrap()? Die class von dem div bleibt ja merkwürdigerweise erhalten, wenn man ohne clone arbeitet.

http://api.jquery.com/wrap/: Description: Wrap an HTML structure around each element in the set of matched elements.
 
im Prinzip ja, aber ganz offengestanden war ich schon der Meinung, das jQuery doch etwas total Simples anzubieten haben müsste, das ich bisher nur nicht gefunden habe, so was in der Art wie outerhtml oder so.
Ich kenn zumindest nichts, bin aber auch kein jQuery-Profi
Was genau macht das wrap()?
HTML:
<div class="featured">
  <a href="http://meineDomain.com/meineSeite.html" target="_blank">MeinText</a>
</div>
in ein div gewrappt ergibt
HTML:
<div>
<div class="featured">
  <a href="http://meineDomain.com/meineSeite.html" target="_blank">MeinText</a>
</div>
</div>
Von diesem äußeren div der HTML-Inhalt...

Dein Beispiel bringt übrigens ohne clone() genau dasselbe Ergebnis; man kann es also weglassen, wenn ich das richtig sehe.
Dann würde das Wrappen auf den Originaldaten passieren,
->das neue <div> bleibt dauerhaft erhalten und wird auch gerendert
Kann eine andere Ansicht ergeben, kann aber auch keinen Unterschied machen.
 
Hi,
gibt es keine Möglichkeit, mit jQuery den HTML-Inhalt eines Elements inklusive seiner eigenen Attribute und Eigenschaften zu selektieren außer so umständlich wie im Beispiel?
Ich versteh nicht so ganz was du machen willst?
Hiermit $('div.featured') selektierst du ja schon.

Grüße
 
Hej,

ich will die DIVs in Gänze mitselektieren.
Mit HTML() wird nur Inhalt des Elements selektiert, also im Grunde innerHTML.
 
Hi,
verstehe ich dich jetzt richtig du willst das Div inklusive Kindelement selektieren?
Mit .html() selektierst du nicht sondern holst den Inhalt eines Divs um damit was anders zu machen.

Erklär doch mal was Jquery mit der Selektion machen soll?
 
verstehe ich dich jetzt richtig du willst das Div inklusive Kindelement selektieren?
Genau.

Ich habe einen Container mit zig Divs darin, die werden in ein Array geschrieben, einmal durchgeschnüttelt dann anders sortiert wieder in den Container geschrieben.

HTML:
<div>
<div class="featured">
  <a href="http://meineDomain.com/meineSeite1.html" target="_blank">MeinText 1</a>
</div>
<div class="featured">
  <a href="http://meineDomain.com/meineSeite2.html" target="_blank">MeinText 2</a>
</div>
...
...
<div class="featured">
  <a href="http://meineDomain.com/meineSeiten.html" target="_blank">MeinText n</a>
</div>
<div>

Hier die Funktion:
Code:
  (function() {
    function randomOrder(){
      return (Math.round(Math.random())-0.5); 
    }
    var arr = [];
    $('#Text3 .widget-content div.featured').each(function (i, e) {
      arr.push($('<div class=\"featured\">').append($(e).clone()).html());
    });
    arr.sort(randomOrder);
    $('#Text3 .widget-content div.featured').remove();
    $('#Text3 .widget-content').append(arr.join(""));
  })();
 
Zuletzt bearbeitet von einem Moderator:
Hi
Denke bei jQuery in Elementen (es sind ja auch DOM-Elemente die du da selektierst und bearbeitest) und nicht in Text/HTML.

Mit jQuery ist sowas nämlich wirklich sehr einfach :) schau hier:
Javascript:
    $(".featured").each(function() {
        if(Math.random() >= 0.5) {
            $(this).appendTo("#container");
        } else {
             $(this).prependTo("#container");
        }
    });
Laufendes Beispiel:
http://jsfiddle.net/HzV8k/2/


jQuery API:
http://api.jquery.com/clone/
http://api.jquery.com/wrap/
http://api.jquery.com/appendTo/
http://api.jquery.com/prependTo/
 
Zuletzt bearbeitet:
Hej,

Merci, interessante Variante, allerdings werden die Divs im selben Container umgebaut.

Und leider ist die Zufallszahl nicht wirklich zufällig, wie ich inzwischen bemerkt habe.

Ich habe das also inzwischen noch mal geändert:

Code:
    Array.prototype.misch=function() {
      var l=this.length,t,zi;
      for(var i=0;i<l;i++) {
        zi=Math.floor(i+Math.random()*(l-i)); 
        t=this[zi];
        this[zi]=this[i];
        this[i]=t;
      }
    }
    var arr = [];
    $('#Text3 .widget-content div.featured').each(function (i, e) {
      arr.push($('<div class=\"featured\">').append($(e).clone()).html());
    });
    arr.misch();
    $('#Text3 .widget-content div.featured').remove();
    $('#Text3 .widget-content').append(arr.join(""));
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück