javascript - 覆盖 JQuery $ui.progressbar 以更改其宽度

标签 javascript jquery html css jquery-ui

几个小时后,我能够覆盖负责更改对应于 progress bar widget 的元素宽度的函数。 ,由 jQuery UI v1.12.1 - 2016-09-14 管理。

首先,我希望进度条(已完成)完全填满表格的列。但是,默认情况下,"ui.progressbar" 小部件在元素的宽度中写入 "100%"。但是,我需要宽度为 "calc(100% + 30px)"

下面是问题,然后我会给出我的问题的答案。我希望它对某人有用,就像对我一样。

默认 cenary:JQuery UI 将第一个 div 的宽度设置为 102%

<td class="ui-progressbar ui-widget ui-widget-content ui-progressbar-indeterminate" id="divProgress-255" role="progressbar" aria-valuemin="0">
   <div class="ui-progressbar-value ui-widget-header" style="width: 102%;">
         <div class="ui-progressbar-overlay"></div>
   </div>
 </td>

jquery-ui.js(第 133467 行):负责编写的 JQuery UI 行

this.valueDiv.toggle( this.indeterminate || value > this.min ).width( percentage.toFixed( 0 ) + "%" );

进度条图片如下

enter image description here

问题:如何使$ui.progressbar 小部件使用"calc(percentage + increment)" 设置该元素的宽度不再有 "100%" 了吗?

最佳答案

我的解决方案

1) 我创建了一个 _calc 函数并覆盖了 _refreshValue 函数,如下所示:

$.widget("ui.progressbar", $.ui.progressbar, {
    _calc: function(percentage) {
        percentage = percentage.toFixed(0);
        return this.options.calc ? ("calc("+percentage+"% + "+this.options.calc_inc+"px)") : percentage+"%";
    },
    _refreshValue: function() {
        this._super();
        this.valueDiv.width( this._calc(this._percentage()) );
    }
});

2) 我在一列中配置了我的进度条:

function progressBarSettings() {
    $('td[id^=divProgress]').progressbar("option", {
       calc: true,
       calc_inc: 30
    });
}

3) 进度条图片如下:

enter image description here

4) 我的引用资料: Extending widgets 1或者 Extending widgets 2

关于javascript - 覆盖 JQuery $ui.progressbar 以更改其宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52454800/

相关文章:

javascript - #container 在第三次#btnAdd 单击后向左移动?

javascript - 在全屏覆盖中打印文本?

javascript - 单击透明图像上的 div

javascript - 使用 Express.js 在服务器上发送 POST 请求

jquery - 将鼠标悬停在图像上作为链接的想法

html - 父 div 隐藏的下拉菜单

html - 粘性侧导航

javascript - 在单击或鼠标悬停时显示菜单/div 不是简单的方法

javascript - Firefox 正在解析空响应负载

javascript - 如何在 jQuery 上调用同一篇文章,有快捷方式吗?