我想將Limitslider和jQuery-ui-Slider-Pips(jQuery UI slider widget的兩個擴展)組合到一個滑塊中。結合「limitslider」和「jQuery-ui-Slider-Pips」jQuery UI擴展
不幸的是,兩個擴展都採用不同的方法來擴展基礎庫。 jQuery-ui-Slider-Pips使用$.extend()
向$.ui.slider.prototype
添加其他方法,而Limitslider定義了一個新的jQuery UI小部件並重新使用原始滑塊的一部分。這使得兩者結合起來很困難。
我嘗試了幾種辦法讓它工作,但他們都至今沒...
1日的嘗試,「我不知道這是否正常工作」
$('#slider').limitslider().slider('pips');
這一個可以理解的是沒有工作,因爲在極限滑道原型中沒有「點子」功能。
第2次嘗試, 「我應該能夠做到這一點,對不對?」
var extensionMethods = {
pips: $.ui.slider.prototype.pips,
float: $.ui.slider.prototype.float
};
$.extend(true, $.vanderlee.limitslider.prototype, extensionMethods);
$('#slider').limitslider().limitslider('pips');
與jQuery的UI的滑塊點子提供不利於擴展方法Limitslider,因爲這些方法在內部使用原來的「滑塊()」方法和「滑蓋」的命名空間。 (我甚至嘗試重構了jQuery UI的滑塊,點子代碼,改變「滑蓋」引用「limitslider」,但我不能使它工作。)
第三嘗試,「爲什麼沒」我以前想過這個嗎?「
var extensionMethods = {
pips: $.ui.slider.prototype.pips,
float: $.ui.slider.prototype.float
};
$.widget('ui.slider', $.extend({}, $.vanderlee.limitslider.prototype, extensionMethods));
$('#slider').slider().slider('pips');
重新定義了原有ui.slider作爲jQuery的UI的滑塊基本點和Limitslider的合併,結果似乎是這樣一個好主意。不幸的是,它只返回錯誤(Chrome:「Uncaught RangeError:最大調用堆棧大小超出」,Firefox:「遞歸太多」)。我想它會觸發一個無限循環。
問題:什麼是這樣的,如果有的話,使這兩個擴展一起工作?
感謝您的關注!我會繼續努力讓細節工作。我在你的小提琴中發現了一個問題,雖然...當你滑動手柄時,浮動不會更新它的值。控制檯顯示「originalMousedown不是功能」。看起來像我在第二次嘗試中遇到的問題。 – marcvangend
跟進:我最終沒有合併這兩個擴展,我一直以各種方式遇到錯誤。我現在使用jQuery-ui-Slider-Pips並使用自定義代碼實現了一些Limitslider-ish功能(例如http://stackoverflow.com/a/44102147/241546)。 – marcvangend