我想在jQuery中實現一個範圍選擇器插件。你可以看到有點工作的版本JavaScript中的範圍選擇器。範圍無效?
但是它沒有正常工作。上面的箭頭必須(最大)到下面箭頭的位置,反之亦然。另外,在控制檯日誌中,當我只移動頂部箭頭時,它顯示TypeError: boxpos is undefined
。我認爲我正確定義範圍,是因爲我不是或者因爲同一個插件有兩個元素會互相干擾?這裏的HTML:
<div class = "range">
<div class = "start">◀</div>
<div class = "show"></div>
<div class = "end">◀</div>
</div>
和JavaScript:
// Make the main form to be draggable
(function ($, window) {
$.fn.range = function(mini, maxi) {
// The element to be clicked
var arrow = this;
// The current position when clicked
var boxpos;
// Minimum position that it can achieve
var mini = $(mini).offset().top;
var maxi = $(maxi).offset().top + $(maxi).height();
// The position of the mouse
var mouse;
$(arrow).mousedown(function(event){
arrow.addClass("dragby");
boxpos = arrow.offset();
mouse = event;
// Avoid selecting text
event.preventDefault();
});
$(window).on("mousemove", function(event){
// Is there anything to be dragged
if($('.dragby').length)
{
$('.dragby').offset({
top: boxpos.top + event.pageY - mouse.pageY
});
if (event.pageY < mini)
$('.dragby').offset({
top: mini
});
if (event.pageY > maxi)
$('.dragby').offset({
top: maxi
});
}
});
$(window).mouseup(function(event){
arrow.removeClass("dragby");
// Avoid any link/anything that could be there
event.preventDefault();
});
return this;
}
}(jQuery, window));
// END OF PLUGIN
$(".range .start").range(".range", ".end");
$(".range .end").range(".start", ".range");
注:如果可能的話儘量回答不jQuery UI的,我寧願不添加其他的依賴正因爲如此。
您好像在這行上有一個錯誤'top:boxpos.top + event.pageY - mouse.pageY'其中boxpos沒有定義 – alnafie
謝謝,但我也發現,在TypeError中說明:boxpos是undefined',但是我不確定它爲什麼沒有被定義。這就是我在這個問題中實際上要求的... –