2013-11-19 3 views
0

Я использую this jQuery plugin для загрузки SVG-изображения в div. Я хотел бы получить все идентификаторы элементов из XML-данных SVG, которые содержат атрибут идентификатора. Например, в моем SVG-изображении у меня есть circle и polygon элементы с атрибутами ID, но элемент rect без атрибута идентификатора. Я хочу получить эти два с идентификаторами из XML.jQuery получить все элементы внутри SVG с указанным идентификатором

Как это сделать?

Я пробовал это в методе onLoadsvg.

$("#image svg").each(function() { 
    $("#list").append("<option>" + this.id + "</option>"); 
}); 

#image является контейнером для svg элемента и #listselect является метка.

+1

Пожалуйста, после того, что вы пробовали до сих пор. Мы будем рады помочь вам с кодом, который у вас есть. –

+0

@FelixKling Я добавил код, который я пробовал. – MikkoP

ответ

3

Предполагая, что SVG добавлен на странице должным образом, вы можете использовать "has attribute selector", чтобы выбрать все элементы с ID:

$("#imag > svg [id]").each(function() { 
    $("#list").append("<option>" + this.id + "</option>"); 
}); 
+0

Спасибо за ваш ответ! – MikkoP

2

Уверена, что он не работает?

Я создал fiddle с кодом

$("#image svg").each(function() { 
    $("#list").append("<option>" + this.id + "</option>"); 
});  

и это выглядит хорошо для меня.

Edit: Заменить вторую строку с этим:

$("#list").append("<option style='display:" + ((this.id.length>0)?'inline':'none') + ";'>" + this.id + "</option>"); 

, чтобы показать только те, с ID. Или просто поместите чек (длина> 0 или что-то еще) перед добавлением тега опции (который, вероятно, будет легче понять/изменить позже, я просто хотел бы использовать тройные операторы: p)

+0

Я имел в виду нечто подобное. http://jsfiddle.net/y6bRC/2/ Мне нужно получить все идентификаторы и проанализировать только те, которые я хочу: rect, polygon и circle. – MikkoP

+0

Эй, спасибо за ваше редактирование. Этот элемент может не содержать элементы без идентификатора, но он по-прежнему перебирает элементы 'svg' в' # image', а не элементы в 'svg'. – MikkoP

+0

@MikkoP Вы используете неправильный селектор. В первой строке это должно быть $ ('# image g') OR $ ('# image svg *'), а не svg [Обновленный скрипт] (http://jsfiddle.net/tewathia/y6bRC/3/) – tewathia

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