在“Raphaeljs set”中设置了一个id

时间:2013-06-11 16:46:48

标签: set raphael

我想为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然后找到设置?

提前感谢您的帮助。

2 个答案:

答案 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

祝你好运