如何使用jquery使jquery knob只读?

时间:2013-08-13 07:48:35

标签: javascript jquery jquery-knob

我正在使用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 个答案:

答案 0 :(得分:4)

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

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

如此函数所示,这些是唯一被调用的方法。 “readOnly”选项只能从我第一次创建旋钮时看到的内容中查看,因此在调用$('.knob').knob();后更改此值无效。

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

$('.knob').knob({
    "readOnly":true
 });

答案 1 :(得分:3)

来自jQuery Knob Documentation

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

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

$('.button').click(function() {
    $('.dial').trigger('configure', {"readOnly": true});
}

答案 2 :(得分:1)

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

  1. 尝试取消绑定所有相关事件(点击,滚动,鼠标向下等)
  2. 使用与旋钮相同的尺寸创建空白div ,并在旋钮上方覆盖。你仍会看到它,但所有事件都将被div捕获,使你的旋钮“只读”。

答案 3 :(得分: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
    }
})