Javascript / Jquery属性选择器

时间:2011-05-09 00:46:20

标签: javascript jquery svg

我需要找到一个元素,它可以动态创建,也可以是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的rect元素匹配,设置所有的属性。

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

        }
}

};

显示我的意图更像是一个伪代码。我不确定它是否会找到动态创建的元素。有更好的逻辑吗?我不必使用jQuery,但任何JS sol都会受到高度赞赏。


编辑1: 选择器可能正在工作,但我在如何链接所选对象上的操作方面有点迷失。

之类的,

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

还是更好的方法???谢谢... 谢谢, BSR。

2 个答案:

答案 0 :(得分:1)

当然它应该找到任何新添加的DOM元素 - 不确定为什么它不会选择它..

我会进入萤火虫并输入

$(“rect”)并查看是否有任何显示,然后查看属性并查看其中的内容

答案 1 :(得分:1)

Iiuc你想做的是:

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元素。