1

我正在使用一个 jquery 旋钮插件。我想在按钮单击时将旋钮设为只读。

(function() {
$(".dial").knob({
    'min':0,
    'max':360,
    'change' : function(degree){
        var img = $(".volume_bttn");
        if(radioSwitchState == 1)
        {
            img.css('-moz-transform', 'rotate('+degree+'deg)');
            img.css('-webkit-transform', 'rotate('+degree+'deg)');
            img.css('-o-transform', 'rotate('+degree+'deg)');
            img.css('-ms-transform', 'rotate('+degree+'deg)');
            var vol = ((degree)/360).toFixed(2);
            //console.log(vol);
            $("#jquery_jplayer_1").jPlayer("volume",(360-vol));
        }
    },
    'fgColor' : '#460E09',//460E09
    'bgColor' : "transparent",//transparent
    'width' : 107,
    'thickness' : 0.3,
    'displayInput' : false,
    'linecap' : 'butt'
    });
});

这是我正在初始化旋钮的代码。如何在按钮单击时使其只读?(我重复)

4

4 回答 4

4

查看代码,您无法$('.knob').trigger('configure', {})在创建旋钮后使用 设置只读状态。这样做的原因是因为“配置”事件绑定到:

var cf = function (e, conf) { 
    var k;
    for (k in conf) {
        s.o[k] = conf[k];
    }
    s._carve().init();
    s._configure()
    ._draw();
};

从这个函数中可以看出,这些是唯一调用的方法。“只读”选项仅在第一次创建旋钮时我可以看到的内容中查看一次,因此在调用后更改此值$('.knob').knob();不起作用。

您必须在创建期间设置此值:

$('.knob').knob({
    "readOnly":true
 });
于 2014-06-18T13:37:38.220 回答
3

来自jQuery 旋钮文档

$('.dial').trigger(
    'configure',
    {
        "min":10,
        "max":40,
        "fgColor":"#FF0000",
        "skin":"tron",
        "cursor":true
    }
);

所以你最终会得到这样的东西:

$('.button').click(function() {
    $('.dial').trigger('configure', {"readOnly": true});
}
于 2013-08-13T08:00:39.873 回答
1

看看@dodo 发布的触发方法是否有效。如果没有,我有两种解决方法:

  1. 尝试取消绑定所有相关事件(单击、滚动、鼠标向下等)
  2. 创建一个与旋钮尺寸相同的空白 div并将其覆盖在旋钮上方。您仍然会看到它,但所有事件都将被 div 捕获,使您的旋钮“只读”。
于 2013-08-13T08:06:14.520 回答
0
$(".dial").knob({
    min: 1
    max: 10
    stopper: true,
    readOnly: true,//if true This will Set the Knob readonly cannot click
    release: function (value) {
      //Do something as you release the mouse
    }
})
于 2013-10-08T09:24:06.837 回答