我建议:
$('button').click(
function(e) {
e.preventDefault();
var parent = $(this).closest('div');
if ($(this).hasClass('btn-move-up')) {
parent.insertBefore(parent.prev('div'));
}
else if ($(this).hasClass('btn-move-down')) {
parent.insertAfter(parent.next('div'));
}
});
JS 小提琴演示。
编辑添加省略的功能(隐藏相关按钮):
function firstAndLast(container) {
if (!container) {
return false;
}
else {
container.find('button:disabled').prop('disabled', false);
container.find('button.btn-move-up:first').prop('disabled', true);
container.find('button.btn-move-down:last').prop('disabled', true);
}
}
firstAndLast($('#container'));
$('button').click(
function(e) {
e.preventDefault();
var parent = $(this).closest('div'),
grandparent = $(this).closest('#container');
if ($(this).hasClass('btn-move-up')) {
parent.insertBefore(parent.prev('div'));
firstAndLast(grandparent)
}
else if ($(this).hasClass('btn-move-down')) {
parent.insertAfter(parent.next('div'));
firstAndLast(grandparent)
}
});
JS 小提琴演示。
编辑关于button
元素实际上没有被使用的启示。相反,我们现在使用a
元素:
function firstAndLast(container) {
if (!container) {
return false;
}
else {
container.find('a.disabled').removeClass('disabled')
container.find('a.btn-move-up:first').addClass('disabled');
container.find('a.btn-move-down:last').addClass('disabled');
}
}
firstAndLast($('#container'));
$('a').click(
function(e) {
var that = $(this);
if (!that.hasClass('disabled')) {
e.preventDefault();
var parent = $(this).closest('div'),
grandparent = $(this).closest('#container');
if ($(this).hasClass('btn-move-up')) {
parent.insertBefore(parent.prev('div'));
firstAndLast(grandparent)
}
else if ($(this).hasClass('btn-move-down')) {
parent.insertAfter(parent.next('div'));
firstAndLast(grandparent)
}
}
});
JS 小提琴演示。
参考: