2010-03-11 3 views
6

У меня есть некоторый html, извлеченный в строку var, и вы хотите использовать выбор элемента jQuery только на этой строке. Это возможно?Как применить элемент jQuery к строковой переменной

Например:

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

Таким образом, в этом примере, я хочу, чтобы извлечь id и href из <a> тега в myHtml.

Благодаря

ответ

10

Если я правильно понимаю, у вас есть HTML-код в строковую переменную, и хотите запросить в этом?

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

Это выглядит многообещающе. Я дам ему попробовать. – user191688

+0

+1 - Единственный ответ, который относится к вопросу. –

+0

@Nick Craver, как это отличается от моего ответа. Кроме селектора. Я пытаюсь понять. Спасибо –

0

Вы могли бы сделать что-то вроде:

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

@ durilai Да, я мог бы это сделать, но в этой ситуации это не оптимально. – user191688

+0

Почему? Он достигает того, что вы ищете. –

+1

@uku это лучший способ ... – Joberror

0

Существует плагин JQuery (here), которые вы можете использовать, чтобы разобрать строку как XML DOM, а затем использовать JQuery для запроса его. Это должен быть XML, а не «расслабленный» вид XML, который вы иногда видите в HTML, хотя (т. Е. Вам нужны цитаты вокруг ваших значений атрибутов).

0

Если вам необходимо обработать несколько элементов в вашей структуре вы можете сделать это

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

Найти метод рекурсивный и не будет использовать его, если вам не нужно. –

Смежные вопросы