あなたが提供できるどんな助けにも感謝します!現在、私はuiソート可能なコードを使用して、ユーザーがアイテムを順番に上下に移動できるようにしています。ここで、これらの各アイテムに、ユーザーがクリックするだけでアイテムを上下に移動できる「上」ボタンと「下」ボタンのセットを提供したいと思います。私はこれらの投稿を作り直そうとしましたが、明らかな何かが欠けているようです...
jQueryソート可能上/下移動ボタンjqueryで上/下に移動
どういうわけか、jqueryを正しい要素に適用していないと思います。私のjsfiddleはここにあります: http://jsfiddle.net/kevindp78/vexw5/2/ そしてコードは以下にあります。
HTML
<div id="box" class="ui-sortable" style="display: block;">
<div class="leg">
<a class="image">IMG1</a>
<div class="details">
<h3><a href="/details">Info</a></h3>
<span class="moreinfo">MoreInfo</span>
</div>
<div class="clear"></div>
<div class="up-down">
<p>Change Order</p>
<div class="up">
<input type="button" value="Up" class="up-button"/>
</div>
<div class="down">
<input type="button" value="down" class="down-button"/>
</div>
</div>
<div class="morestuff">
Stuff1
</div>
</div>
<div class="leg">
<a class="image">IMG2</a>
<div class="details">
<h3><a href="/details">Info</a></h3>
<span class="moreinfo">MoreInfo</span>
</div>
<div class="clear"></div>
<div class="up-down">
<p>Change Order</p>
<div class="up">
<input type="button" value="Up" class="up-button"/>
</div>
<div class="down">
<input type="button" value="down" class="down-button"/>
</div>
</div>
<div class="morestuff">
Stuff2
</div>
</div>
<div class="leg">
<a class="image">IMG3</a>
<div class="details">
<h3><a href="/details">Info</a></h3>
<span class="moreinfo">MoreInfo</span>
</div>
<div class="clear"></div>
<div class="up-down">
<p>Change Order</p>
<div class="up">
<input type="button" value="Up" class="up-button"/>
</div>
<div class="down">
<input type="button" value="down" class="down-button"/>
</div>
</div>
<div class="morestuff">
Stuff3
</div>
</div>
JS
$('up-button').click(function(){
$(this).parent('.leg').insertBefore.previous('.leg')
});
$('.down-button').click(function(){
$(this).parent('.leg').insertAfter.next('.leg')
});
コードで対処すべき問題がいくつかあるので、それらを順番に見ていきましょう。
最初に$('up-button')
があります _.
_ がないため、ボタンは選択されません。
次に、1レベルだけ上がる parent()
メソッドを使用しています。代わりに parents('.leg')
を使用してください。
insertBefore()
は、選択したコンテンツを配置する場所に関するターゲットを受け入れるメソッドです。
previous()
は関数ではなく、 prev()
であり、前の要素を選択するだけなので、パラメーターは必要ありません。
これらの修正をすべて組み合わせると、次のようになります。
_$('.up-button').click(function(){
$(this).parents('.leg').insertBefore($(this).parents('.leg').prev());
});
$('.down-button').click(function(){
$(this).parents('.leg').insertAfter($(this).parents('.leg').next());
});
_
この編集されたフィドルで示されているように http://jsfiddle.net/vexw5/6/
JSを次のようなものに置き換えてみることができます。
$(".down").click(function () {
var $parent = $(this).parents(".leg");
$parent.insertAfter($parent.next());
});
$(".up").click(function () {
var $parent = $(this).parents(".leg");
$parent.insertBefore($parent.prev());
});
これは基本です。アニメーションなどはありません。