draggable()
jQuery UIの機能から作られた自家製のスライダーがあります:
$("#petrolGauge .fuelBar .slider").draggable({
containment: "parent",
axis: "x",
drag:function(){
updValues();
},
start:function(){
$(this).css("background-color","#666");
},
stop:function(){
//checkForm();
$(this).css("background-color","#AAA");
}
});
これは、次のマークアップ用です。
<div id="petrolGauge">
<input id="endPet" name="endPet" type="hidden" value="0">
How much fuel was left in the tank when you were finished? (Use the slider) <b>(~<span class="petLeft">0</span>%)</b>
<span class="mandatory">*</span><br />
<div class="fuelBar">
<div title="Drag" class="slider"></div>
</div>
スライダーをクリックすると、これはうまくいきます。しかし、燃料バー (スライダーの親) をクリックすると、スライダーがドラッグを開始するだけでなく、カーソルにジャンプするようにしたいと思います。私はこれを行うことでそれを達成しました:
$("#petrolGauge .fuelBar").on("mousedown",function(e){
slider = $("#petrolGauge .fuelBar .slider");
left = e.pageX-($(this).offset().left)-(slider.width()/2);
updValues();
slider.css("left",left).trigger(e);
});
これには2つの問題があります:
まず、親をクリックすると、スライダーがドラッグを開始する前に数秒の遅延が発生しますか? Chrome と IE でこれを試してみましたが、どちらもそれを行います。次に、カーソルが親の端からスライダーの幅の半分未満離れている場合、スライダーは親の外側に移動します。いくつかのチェックでこれを修正するのは難しくありませんが、別の方法があるかどうか疑問に思っていましたか? draggable()
正直なところ、これにはパラメーターがないことに驚いています。助けられるなら使いたくなかっslider()
たが、それが唯一の方法なら、それが唯一の方法だ.
これは、使用するフィドルです。