#jquery #xml-parsing
#jquery #xml-синтаксический анализ
Вопрос:
Я могу выполнять поиск в XML-канале со следующим кодом
$($xml).find('item').each(function(i, e) { ... }
Для каждого элемента в этом цикле я могу получить доступ к своему элементу content:encoded со следующими строками и посмотреть результаты…
$mcontent = $(this).find('encoded').text();
console.log('source: ' $mcontent.match(/<img[^>]*>/g));
… который содержит несколько изображений, разделенных запятыми, как это…
<p><img src="...">, <img src="...">, <img src="..."></p>
Как я могу получить только первый элемент изображения и сохранить его в переменной $mImage?
Спасибо!
Обновить:
Когда я пытаюсь сделать следующее…
$mcontent = $(this).find('encoded').text();
$mcontent = $mcontent.match(/<img[^>]*>/g).split(',')[0];
console.log('source: ' $mcontent);
Браузер сообщает мне об этом…
Uncaught TypeError: $mcontent.match(...).split is not a function
.. и я не знаю почему…
Комментарии:
1. «your-image, string, here».split(‘,’)[0] даст вам первое изображение в виде строки.
2. У меня есть еще один вопрос выше, пытаясь реализовать это… Я также забыл элемент из моей первоначальной проблемы…
3. Спасибо axel за напоминание о разделении
Ответ №1:
Если ваш текст:
<p><img src="...">, <img src="...">, <img src="..."></p>
вы можете использовать:
var str = '<p><img src="...">, <img src="...">, <img src="..."></p>';
var firstImg = $($.parseHTML(str)[0]).find('img:first');
Неперехваченная ошибка типа: $mcontent.match(…).split не является функцией
Это происходит потому, что «$mcontent.match(/]> / g)» * возвращает массив img, и этого достаточно, чтобы вы получили первый элемент:
Фрагмент:
var str = '<p><img src="...">, <img src="...">, <img src="..."></p>';
var firstImg = $($.parseHTML(str)[0]).find('img:first');
console.log(firstImg[0].outerHTML);
var t = str.match(/<img[^>]*>/g)[0];
console.log(t);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>