0

我想将 id 设置为 Raphael 集,因为我想在事件点击后显示它。

这是我的一套:

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 然后我找到集合?

在此先感谢您的帮助。

4

2 回答 2

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');
 }

我希望这有帮助。

于 2013-06-12T16:04:49.770 回答
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

祝你好运

于 2013-06-11T17:39:15.473 回答