Рафаэль Дж. С. Пирог: добавление идентификатора к фрагментам пути - PullRequest
3 голосов
/ 26 апреля 2011

Я видел этот вопрос, заданный в группах Google Рафаэля, но после нескольких часов поиска там, а также здесь и в Google, я не могу найти решение.

Я бы просто хотелчтобы быть в состоянии предназначаться для моих секторов круговой диаграммы (путь svg), используя jQuery, но я не могу понять, как добавить собственные идентификаторы в теги пути - там нет атрибута ID по умолчанию:

<path fill="#764c29" stroke="none" d="M350,350L350.6911881148345,94.00093308961084A256,256,0,0,1,561.8463375189659,206.2741175716762Z" style="stroke-width: 1; stroke-linejoin: round;" stroke-width="1" stroke-linejoin="round"/>

Что было бы идеально, так это:

<path **id="my_id"** fill="#764c29" stroke="none" d="M350,350L350.6911881148345,94.00093308961084A256,256,0,0,1,561.8463375189659,206.2741175716762Z" style="stroke-width: 1; stroke-linejoin: round;" stroke-width="1" stroke-linejoin="round"/>

Кто-нибудь понял, как этого можно достичь?

Этот код я использую для создания круговой диаграммы:

window.onload = function () {
var r = Raphael("holder");


var pie = r.g.piechart(350, 350, 256, [56, 104, 158, 23, 15, 6]);

pie.hover(function () {
    this.sector.stop();
    this.sector.animate({scale: [1.1, 1.1, this.cx, this.cy]}, 500, "bounce");

    }, function () {
        this.sector.animate({scale: [1, 1, this.cx, this.cy]}, 500, "bounce");
    });               

};

По сути, причина, по которой мне нужно это сделать, заключается в том, что я могу создать несколько отдельных якорных триггеров для выполнения анимаций масштабирования, показанных выше.

Любая помощь с благодарностью.

1 Ответ

5 голосов
/ 27 апреля 2011

объект круговой диаграммы предоставляет 3 способа добраться до своих секторов.

1) каждая функция

pie.each(function(sector, cover, i) {
 sector.attr({/*...*/}); //raphael
 $(sector.node).foo(); //jquery
});

2) объект серии (для стайлинга и трансформации)

var i = 0; // 0 = 56, 1 = 104, 2 = 158 …

//raphael way to hide the first sector
pie.series.items[i].attr({ opacity : 0 });  

//jquery way to hide the first sector
$(pie.series.items[i].node).hide(); 

, где i - индекс вашего массива данных

демо: http://jsbin.com/eriqa5/2/edit

3) охватывает объект (для событий мыши и касания)

//raphael way to hover the first sector
pie.covers.items[0].hover(...);

//jquery way to hover the first sector
$(pie.covers.items[0].node).hover(...);

демо: http://jsbin.com/eriqa5/4/edit

...