合計幅が 585px だとします。そして、スペースを均等なセクションに分割し、それぞれに位置内のインデックス値を割り当てたいと思いました。6 つのセクションがあるとしたら、次のようなことができます: (合計幅 / セクション数によって割り当てられます)
//Set up elements with variables
this.sliderContent = config.sliderContent;
this.sectionsWrap = config.sectionsWrap;
//Selects <a>
this.sectionsLinks = this.sectionsWrap.children().children();
//Create drag handle
this.sectionsWrap.parent().append($(document.createElement("div")).addClass("handle-containment")
.append($(document.createElement("a")).addClass("handle ui-corner-all").text("DRAG")));
//Select handle
this.sliderHandle = $(".handle");
var left = ui.position.left,
position = [];
var position = ((left >= 0 && left <= 80) ? [0, 1] :
((left >= 81 && left <= 198) ? [117, 2] :
((left >= 199 && left <= 315) ? [234, 3] :
((left >= 316 && left <= 430) ? [351, 4] :
((left >= 431 && left <= 548) ? [468, 5] :
((left >= 549) ? [585, 6] : [] ) ) ) ) ) );
if (position.length) {
$(".handle").animate({
left : position[0]
}, 400);
Slider.contentTransitions(position);
}
しかし、x 個のセクションがあるとしたらどうなるでしょうか。これらのセクションは、次のような単なる要素です
<li><a></a></li>
<li><a></a></li>
<li><a></a></li>
または
<div><a></a></div>
<div><a></a></div>
<div><a></a></div>
<div><a></a></div>
合計 585px を分割し、.handle
要素の現在の左の値に従ってインデックスを分類するにはどうすればよいですか? を使用してドラッグ ハンドルの場所を知ることができます。ui.position.left
私が望むのは、各要素のインデックスを設定し、インデックス付き要素内のハンドルの場所に応じてハンドルをアニメーション化できるようにすることです。各要素にはインデックスが付けられているため、後でトランジション メソッドを呼び出して、表示する現在のインデックス # を渡します。上記のコードは機能しますが、実際には効率的ではありません。また、セクションの幅に合わせてハンドルの幅も考慮する必要があります。http://jsfiddle.net/yfqhV/1/