我想为Raphael设置一个id,因为我希望在点击事件后显示它。
这是我的设置:
var divResult = document.getElementById('printResult');
var space2Draw = Raphael(divResult, 1600, 900);
var st = space2Draw.set();
st.push(
space2Draw.circle(newXCoordinates, newYCoordinates, 20).click((function (valore) {
return function () {
window.open("index-point.html?id=" + (valore) + "&type=" + type + "&description=" + description + "&name=" + name);
}
}(valore))).mouseover(function () {
this.attr({ 'cursor': 'pointer' });
this.attr({ 'opacity': '.50' });
}).mouseout(function () {
this.attr({ 'opacity': '1' });
})
);
在我的页面中我有一个按钮:
function show(){
var element = space2Draw.getById(-1);
element.show();
}
}
无法以这种方式设置id:set.id = -1? 如何设置ID然后找到设置?
提前感谢您的帮助。
答案 0 :(得分:2)
您可以尝试使用setAttribute()
为稍后要访问的元素添加CLASS,然后修改其CSS属性。第一步是更改每个元素的CLASS:
myElement.node.setAttribute("class", "class_name");
不幸的是,Raphael不允许您将集合作为唯一的HTML对象处理,因此您无法立即对整个集合执行此操作。相反,您可能必须为集合中的每个元素执行此操作,可能需要使用for循环,如下所示:
for (var i=0; i<st.length; i++) {
st[i].node.setAttribute("class", "class_name");
}
然后,使用JQuery,您可以修改您创建的CLASS的CSS属性,以便显示集合中的元素。
function show(){
$('.class_name').css('display', 'block');
}
我希望这会有所帮助。
答案 1 :(得分:1)
也许您可以使用Raphael data()
函数将任何数据分配给元素/集。
示例:强>
// you can keep global var for your id and increment it within your code
var id = 0;
var p = Raphael(100, 100, 500, 500),
r = p.rect(150, 150, 80, 40, 5).attr({fill: 'red'}),
c = p.circle(200, 200, 70).attr({fill: 'blue'});
var set = p.set(r,c).data("id", id);
id++;
// then in your click event to get the id you can do
var whichSet = this.data("id");
// data("id") will return you the global id variable
祝你好运