javascript – 更新jQuery插件以构建HTML并防止它在多个调用上重建

前端之家收集整理的这篇文章主要介绍了javascript – 更新jQuery插件以构建HTML并防止它在多个调用上重建前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在努力将我的简单JavaScript Donut Chart转换为jQuery插件.

这是我的第一个jQuery插件,我可以在一些地方使用一些帮助,请…

到目前为止演示的内容http://jsfiddle.net/jasondavis/qsgqebox/

下面是我到目前为止的JavaScript.

jQuery的

jQuery.fn.updatePercentageGraph = function (options) {

    var settings = $.extend({
            // These are the defaults.
            percent: 0,},options );    

    var percent = settings.percent;

    if(typeof percent === 'undefined') {
        var percent = parseInt(this.data('percent'));
    }else{
        if(percent === '') {
            var percent = parseInt(this.data('percent'));
        }else{
            var percent = parseInt(percent);
            this.attr('data-percent',percent);
        }
    }

    var deg = 360*percent/100;
    if (percent > 50) {
        this.addClass('gt-50');
    }else{
        this.removeClass('gt-50');
    }
    $('.ppc-progress-fill').css('transform','rotate('+ deg +'deg)');
    $('.ppc-percents span').html(percent+'%');

};

用法

$('#project_progress2').updatePercentageGraph(34);

我需要帮助的是:

1)
它目前要求用户像这样设置HTML:

我想做的就是把它放在你可以简单地做这样的事情的地方….

然后jQuery插件自动创建正确的子节点.

jQuery部分会自动创建:

2)更新一些选择器以允许页面上的多个圆环图

到目前为止,插件中的另一个问题是从上面显示的JavaScript底部开始的第3和第4行.它调用$(‘.ppc-progress-fill’)和$(‘.ppc-percentnts span’),这将阻止在页面上使用多个图表,因此需要更新以定位存在于该页面中的类.仅限当前图表.

3)优化以防止每次调用函数以更新百分比值时重新创建HTML结构

如果我将此插件转换为自动生成HTML结构,那么我还需要考虑对其进行优化,以便每次我的代码运行时都不会一直重复生成该结构,这将调用$( ‘#project_progress2’)updatePercentageGraph(34).因为在我将使用它的项目中,这些图表将不断更新百分比值.

或许甚至可能更好的是有一个创建初始图表HTML的函数,然后是第二个可以反复调用函数,它只处理百分比的更新,并且不会尝试重建和注入HTML结构结束了!

我提到的这些问题是我现在有点困难的关键领域,请给我一些帮助.

JSFiddle演示:

到目前为止我所拥有的JSFiddle还有一些按钮来测试更新百分比值:http://jsfiddle.net/jasondavis/qsgqebox/

最佳答案

1) The part jQuery would auto create

解决这一点,您需要在插件创建时创建HTML结构.

2) Update some selectors to allow multiple Donut charts on page

防止使用整页选择器.相反,您可以保留对创建的HTML结构的引用,并仅对此子集起作用.不是整个DOM.

3) Optimize to prevent the HTML structure from being re-created every time the function is called to update the percent value

解决多个实例的常用模式是创建一个包含插件实例的数据属性.如果某个实例已存在,那么您只需对该实例执行操作,而不是创建新实例.

拥有此实例对于另一个用于向插件添加方法的jQuery模式也很有用.您可以检查传递给插件的参数是否为字符串,然后调用具有该名称方法.

$('#project_progress').updatePercentageGraph('percent',percent);

您也可以使用不带参数的相同方法获取值:

var percent = $('#project_progress').updatePercentageGraph('percent');

一体化,我会建议这样的事情:

(function ($,undefined) {
    'use strict';
    function PercentageGraph(element,options) {
        this.$percentageGraph = $(element).append(
            '

demo

猜你在找的CSS相关文章