Селектор атрибутов Javascript / Jquery - PullRequest
1 голос
/ 09 мая 2011

Мне нужно найти элемент, который может быть создан динамически и часть DOM, и изменить несколько его атрибутов.Я пробую это на элементах SVG, но ваш опыт в Javascript / Jquery поможет мне.

<svg id="cvs" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" >
    <rect uid="id1" class="cont" x="0" y="0" width="200" height="200" />
</svg>

Во время выполнения я добавляю еще несколько прямоугольных элементов, таких как

var el = document.createElementNS(svgNS,'rect');
        //set the attribues including uid //say id2, id3 etc
    svg.appendChild(el);

Мне нужно написать метод обновления, где он соответствует прямоугольному элементу на основе uid, устанавливает все атрибуты.

updateRect = function(properties){
        $('rect[uid="' + properties.uid + '"]') {
        for (var p in properties) {
            this.setAttribute(p,prop[p]);

        }
}

};

Это скорее псевдокод, чтобы показать мои намерения.Я не уверен, найдет ли он динамически созданные элементы.Есть ли лучшая логика?Мне не нужно использовать jQuery, но любой JS-соль был бы высоко оценен.


Редактировать 1: Селектор может работать, но я немного растерялся, как я могу связать операцию навыделенный объект.

что-то вроде

var el = $('rect[uid="' + properties.uid + '"]')
if el.exist() {
 //do the operation
}

или как лучше ???спасибо ... спасибо, бср.

Ответы [ 2 ]

1 голос
/ 09 мая 2011

То, что вы хотите сделать, это:

updateRect = function(properties){
    $('rect[uid="' + properties.uid + '"]').each(function(i, el) {
        for (var p in properties) {
            el.setAttribute(p,prop[p]);
        }
    });
};

или

updateRect = function(properties){
    $('rect[uid="' + properties.uid + '"]').each(function() {
        for (var p in properties) {
            this.setAttribute(p,prop[p]);
        }
    });
};

в зависимости от того, хотите ли вы обрабатывать оболочку jQuery или элемент DOM.

1 голос
/ 09 мая 2011

Конечно, он должен найти все новые добавленные элементы DOM - не уверен, почему он его не выберет.

Я бы пошел в firebug и просто набрал

$ ("rect") и посмотрите, если что-то появляется, затем посмотрите на атрибуты и посмотрите, что происходит на

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...