Если вы не хотите использовать флажок, но используете простые теги, посмотрите этот пример:
См. В JSFiddler: http://jsfiddle.net/nfywg06b/5/
Я не переименовал переменные, поэтомучто легко понять важные корректировки.
Используйте переменную goToLast
, чтобы определить поведение: отправить на последнюю позицию или изменить позицию (устаревшее поведение)
jQuery:
var goToLast = true;
$('.item').each(function() {
var $this = $(this).data({
position: $(this).index()
}),
$table = $this.closest('.container'),
$input = $this;
$input.bind('click', function(e) {
$input.toggleClass('selected');
var $first = $table.find('.item:first'),
position;
if ($(this).hasClass('selected')) {
position = !goToLast ? $first.data('position') : $table.children().length - 1;
$table.find('.item').not($(this)).removeClass('selected');
if (position != 0) $first.insertAfter($table.find('.item').eq(position));
$this.prependTo($table);
} else if ($this.data('position') != 0) {
position = $this.data('position');
$this.insertAfter($table.find('.item').eq(position));
}
});
});
HTML:
<div class="container">
<a href="#" class="item">1</a>
<a href="#" class="item">3</a>
<a href="#" class="item">A</a>
<a href="#" class="item">B</a>
<a href="#" class="item">C</a>
</div>
CSS:
a.item {
display: block;
background-color: silver;
border: 1px solid gray;
padding: 10px;
margin: 10px;
}
a.item.selected {
background-color: green;
}