2

我如何修改此代码http://jsfiddle.net/r6p7E/6/以在每次选择时查看以相同颜色选择的部分?只有当我单击它时,我才希望它是黄色的。

代码 :

  $(function () {

            Highcharts.theme = {
            colors: ['#242c4a'],
            chart: {
             width: 350,
                backgroundColor: {
                    linearGradient: [0, 0, 500, 500],
                    stops: [
                        [0, 'rgb(255, 255, 255)'],
                        [1, 'rgb(240, 240, 255)']
                    ]
                }, 
            },

        };

        // Apply the theme
        Highcharts.setOptions(Highcharts.theme);

        // Build the chart
        $('#container').highcharts({
            chart: {
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'Our Projects'
            },

            plotOptions: {

                pie: {


                    borderColor: '#48588c',
                    borderWidth: 7,
                     slicedOffset: 10,                     
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: false

                    }

                },

                series: {

                point: {
                    events: {
                        select: function() {

                        }
                    }
                }
            }


            },
              series: [{
                type: 'pie',
                name: 'Browser share',
                dashStyle: 'LongDashDotDot',
                data: [
                    ['Firefox',   45.0],
                    ['IE',       26.8],
                    {
                        name: 'Chrome',
                        y: 12.8,
                        sliced: true,
                        selected: true
                    },
                    ['Safari',    8.5],
                    ['Opera',     6.2],
                    ['Others',   0.7]
                ]
            }]
        },

         function(chart) { // on complete


        var renderer = new Highcharts.Renderer(
            $('#container')[0],  50, 50);

        chart.renderer.circle(175, 216, 22).attr({
            fill: '#e7e620',

            'stroke-width': 5,
            zIndex: 3
        }).add();
        }



        );
    });
4

2 回答 2

5

这可能是你真正想要的。但根据你对这个小提琴的要求,你可以得到:http: //jsfiddle.net/r6p7E/8/

您可以将其更改为 click 事件,而不是 mouseOver 事件:

point: {
    events: {
        click: function () {
            this.graphic.attr({
                fill: 'yellow'
            });
        }
    }
},

当然,一旦你离开,mouseOut 事件就会杀死颜色,但我不确定这是否是你想要的,因为你没有提到它。

编辑:这个小提琴保留黄色的颜色,直到它被取消选择(或另一个被选择):http: //jsfiddle.net/r6p7E/12/

allowPointSelect: true,
slicedOffset: 0,
point: {
    events: {
        select: function () {
            this.update({color: 'yellow'});
        },
        unselect: function () {
            this.update({color: '#CCCCCC'});
        }
    }
}
于 2013-08-22T20:31:41.707 回答
2

看到这个小提琴:http: //jsfiddle.net/L5SXX/

您需要打开allowPointSelect,然后为选择状态添加颜色。因为你正在做 mouseOver 和 mouseOut 的东西,你需要一些修改来保持选定的颜色。

    plotOptions: {

        series: {
            allowPointSelect : true,
            slicedOffset: 0,
            states: {
                select: {
                    color: 'yellow'
                },
                hover: {
                    enabled: false
                }
            },
            point: {
                events: {
                    mouseOver: function () {
                        this.graphic.attr({
                            fill: 'red'
                        });
                    }
                }
            },
            events: {
                mouseOut: function () {
                    var serie = this.points;

                    $.each(serie, function (i, e) {
                        if (!this.selected) {                                    
                            this.graphic.attr({
                                fill: '#CCCCCC'
                            });
                        }
                        else {
                             this.graphic.attr({
                                fill: 'yellow'
                            });
                        }
                    });
                }
            }
        }
    },
于 2013-08-22T20:25:09.683 回答