2010-03-11 3 views
6

Ich habe einige HTML extrahiert in eine Zeichenfolge var, und wollen dann jQuery Element Auswahl nur für diese Zeichenfolge verwenden. Ist das möglich?Wie man jQuery Element Auswahl auf eine String-Variable anwenden

Zum Beispiel:

HTML:

<div class=message> 
    This is a message. Click <a class=link id=link1 href=example.com>here</a> 
</div> 

jQuery:

$('div.message').each(function(i, item) { 
    myHtml = $(this).html(); 
    //select <a> tag attributes here 
)}; 

So in diesem Beispiel möchte ich die id und href aus dem <a> Tag extrahieren in myHtml.

Dank

Antwort

10

Wenn ich es richtig verstehe, können Sie HTML-Code haben in einer String-Variablen, und innerhalb dieser abfragen möchten?

// Suppose you have your HTML in a variable str 
var str = '<div class="message">This is a message. Click ' 
     + '<a class="link" id="link1" href="example.com">here</a></div>​​​​​​​​​​​​​​​'; 

// You query the DOM fragment created by passing the string to jQuery function. 
// $(<string>) - creates a DOM fragment (string must contain HTML) 
var anchor = $('a', $(str)); 

// Then you can retrieve individual properties and/or contents: 
var id = anchor.attr('id'); 
var href = anchor.attr('href'); 
var text = anchor.text(); 
+0

Das sieht vielversprechend aus. Ich werde es versuchen. – user191688

+0

+1 - Die einzige Antwort, die für die Frage gilt. –

+0

@Nick Craver, wie ist das anders als meine Antwort. Anders als der Selektor. Ich versuche zu verstehen. Danke –

0

Sie so etwas wie tun könnte:

var aID = $('div.message a.link').attr('id'); 
var aHREF = $('div.message a.link').attr('href'); 
+0

@durilai Ja, ich könnte das tun, aber es ist nicht optimal in dieser Situation. – user191688

+0

Warum? Es erreicht, was Sie suchen. –

+1

@uku das ist der beste Weg ... – Joberror

0

Es ist ein jQuery-Plugin (here), dass Sie einen String als XML-DOM zu analysieren und dann mit jQuery es zur Abfrage verwenden können. Es muss XML sein, nicht die "entspannte" Art von XML, die Sie manchmal in HTML sehen (d. H. Sie benötigen Anführungszeichen um Ihre Attributwerte).

0

Wenn Sie mehrere Elemente innerhalb Ihrer Struktur verarbeiten müssen Sie diese

$('div.message').each(function(i, item) { 
    // find desendant of the item using "find" 
    var alink = $(this).find('a.link'); 
    // Process the item 
    var id = alink.attr('id'); 
    var href = alink.attr('href'); 
)}; 
+0

Finden Methode ist rekursiv und würde es nicht verwenden, wenn Sie müssen. –