我需要找到一个元素,它可以动态创建,也可以是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。
答案 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元素。