2014-09-24 2 views
2

Is is? jQuery KnobDisable Mousewheel на ручке jQuery

Я пытаюсь отключить колесико, но все же разрешаю его перетаскивать/настраивать. Вы можете настроить ручку на чтение только: true, но это не позволит вам перетащить циферблат. Есть идеи?

$(".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 
    } 
}); 

$(".dial").bind("mousewheel", function() { 
    return false; 
}); 
+0

ли вы пытаетесь использовать 'event.preventDefault()' в вашем колесе прокрутки слушателя ? –

+0

попробуйте также отменить «DOMMouseScroll» – nicolast

+0

Пробовал обе эти вещи, и до сих пор нет успеха. – user1791914

ответ

0

Я нашел немного взлома для решения - не идеально, но он работает.

В knob.js файл я закомментировать две строки, которые связывают функцию колеса прокрутки (строки 669 и 670):

//this.$c.bind("mousewheel DOMMouseScroll", mw); 
//this.$.bind("mousewheel DOMMouseScroll", mw) 
2

«только для чтения» атрибут будет делать трюк.

<input type="text" class="knob" value="30" data-thickness="0.1" data-width="90" data-height="90" data-fgColor="#00a65a" readonly>

+0

Ха-ха! Это просто и здорово, спасибо за решение! –

1

читать исходный код JQuery-knob.js, поиск 'прокручивать', вы найдете этот код:

this.$c.bind("mousewheel DOMMouseScroll", mw); 
this.$.bind("mousewheel DOMMouseScroll", mw); 

нет конфигурации, чтобы определить, является ли использование прокрутка или нет, вы можете прокомментировать этот код, чтобы получить работу, но вы столкнетесь с проблемой, если ваши файлы lib управляются с помощью bower или npm ...... каждый раз, когда вы обновляете файлы lib, вам нужно еще раз прокомментировать. поэтому другой способ отключить прокрутки:

$(".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 
    } 
}).children().off('mousewheel DOMMouseScroll'); 

типично '.dial' элемента является элементом ввода, вызывается метод ручки для инициализации регулятора, и он возвращает DIV (в JQuery стиле элемента) оборачивает '.dial' элемента (the $ of this в исходном коде выше), а также и недавно добавленный холст элемент (the $c of this в исходном коде выше), поэтому мы называем children().off('mousewheel DOMMouseScroll') для удаления слушателей событий прокрутки