启用和禁用动态jQuery的旋钮(Enable and disable jquery knob dy

2019-10-17 14:28发布

我使用的是优秀的jQuery插件旋钮 。 然而,我需要动态启用/禁用依赖于用户输入的元素。 存在用于具有支撑disabled其上有没有鼠标(或触摸)的事件被绑定到画布元件的效果页面负载状态。 有谁知道如何解决这个问题,那就是如何(在页面加载)绑定和取消绑定这些鼠标事件监听器?

理想情况下,我想这样做(在禁用旋钮)

$('.button').click(function() {
    $('.knob').enable();
});

编辑:我结束了重写结合/解除绑定鼠标和触摸事件源。 该解决方案是不完美的,所以我没有解决这一问题,如果有人也许有一个更好的(清洁剂)的解决方案。

Answer 1:

HTML

<input class="knobSlider" data-readOnly="true">
<button id="testBtn">clickHere</button>

脚本

在文档准备,

$(".knobSlider").knob();
$("#testBtn").click(function(){
    $(".knobSlider").siblings("canvas").remove();
    if($(".knobSlider").attr("data-readOnly")=='true'){
        $(".knobSlider").unwrap().removeAttr("data-readOnly readonly").data("kontroled","").data("readonly",false).knob();
    }
    else{
        $(".knobSlider").unwrap().attr("data-readOnly",true).data("kontroled","").data("readonly",true).knob();
    }
});

仅供参考,你可以用我的jsfiddle链接> http://jsfiddle.net/EG4QM/ (在Firefox中检查这一点,因为在铬一些外部资源负载的问题)



Answer 2:

如果有人不喜欢接受的答案是如何破坏并重新创建内部canvas元素,然后结帐我的方法:

https://jsfiddle.net/604kj5g5/1/

从本质上讲,检查draw()实现(我还建议监听的价值变动draw方法而不是changerelease ,为此,工作和clickmousewheel分别事件,海事组织不方便)。

var $input = $("input");

var knobEnabled = true;
var knobPreviousValue = $input.val();

$input.knob({
  draw: function () { 
    if (knobPreviousValue === $input.val()) {
      return;
    }

    if (!knobEnabled) {
      $input.val(knobPreviousValue).trigger("change");
      return;
    }

    knobPreviousValue = $input.val();

    console.log($input.val()); 
  },
});


Answer 3:

试试这个来禁用该控件。 我仍然试图找到一种方法,使回

 $("#btnDisable").click(function(){
      $("#knob").off().prev().off();
    });


文章来源: Enable and disable jquery knob dynamically