2010-03-11 21 views
6

Mam trochę wyodrębnionego html do ciągu znaków var, a następnie chcę użyć wyboru elementu jQuery właśnie w tym łańcuchu. czy to możliwe?jak zastosować element jQuery do zmiennej łańcuchowej

Na przykład:

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 
)}; 

Tak więc w tym przykładzie chcę wyodrębnić id i href z tagiem <a> w myHtml.

Dzięki

Odpowiedz

10

Jeśli dobrze rozumiem, masz kodu HTML w zmiennej łańcuchowej, a chcesz kwerendy w ciągu tego?

// 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

To wygląda obiecująco. Spróbuję. – user191688

+0

+1 - Jedyną odpowiedzią na to pytanie. –

+0

@Nick Craver, jak to się różni od mojej odpowiedzi. Inne niż selektor. Próbuję zrozumieć. Dzięki –

0

mógłby zrobić coś takiego:

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

@durilai Tak, mógłbym to zrobić, ale nie jest to optymalne w tej sytuacji. – user191688

+0

Dlaczego? Osiąga to, czego szukasz. –

+1

@uku to jest najlepszy sposób ... – Joberror

0

Jest plugin jQuery (here), które można wykorzystać do analizowania ciąg jako DOM XML, a następnie użyć jQuery do jego odczytania. Musi to być XML, a nie "luźny" rodzaj XML, który czasami widzisz w HTML-ie (tzn. Potrzebujesz wycen wokół wartości atrybutów).

0

Jeśli trzeba przetwarzać wiele rzeczy w swoim konstrukcji można to zrobić

$('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

Metoda wyszukiwania jest rekursywna i nie będzie jej używać, chyba że będzie to konieczne. –

Powiązane problemy