我有100行的textarea(S),用戶可以(在任何特定的順序不)將信息添加到的文字區域看起來像這樣的邏輯:推升和排序的數據列表
var item='<textarea class="itemv"id="k'+k+'"rows="1"style="width:100%;border:none;border-bottom:1px solid #CCC;outline:none;resize:none;background:none;font-weight:bold;">'+_.k+'</textarea><br>';
我我試圖將所有非'未定義'的值「推」到任何空白的textareas中。在底部留下空白文本區域並在頂部填充textareas。我在做這個保存在女巫事物的秩序由用戶編寫,這裏是代碼:
$('#save2').unbind().bind('click', function() {
$($('#items .itemv').get().reverse()).each(function() {
var $prev = parseInt($(this).attr('id').replace('k', '')) - 1;
$prev = $('#k' + $prev);
if ($(this).val() !== '' && $prev.val() === '') {
$prev.val($(this).val());
$(this).val('');
//do again
$($('#items .itemv').get().reverse()).each(function() {
var $prev = parseInt($(this).attr('id').replace('k', '')) - 1;
$prev = $('#k' + $prev);
if ($(this).val() !== '' && $prev.val() === '') {
$prev.val($(this).val());
$(this).val('');
//do again
$($('#items .itemv').get().reverse()).each(function() {
var $prev = parseInt($(this).attr('id').replace('k', '')) - 1;
$prev = $('#k' + $prev);
if ($(this).val() !== '' && $prev.val() === '') {
$prev.val($(this).val());
$(this).val('');
//do again
$($('#items .itemv').get().reverse()).each(function() {
var $prev = parseInt($(this).attr('id').replace('k', '')) - 1;
$prev = $('#k' + $prev);
if ($(this).val() !== '' && $prev.val() === '') {
$prev.val($(this).val());
$(this).val('');
}
});
}
});
}
});
}
});
});
我的問題是,我運行這段代碼多次以完成任務(相當愚蠢真)我無法理解邏輯。如果我只運行一次,如:
則只有第一個文本域值與被推到頂部的未定義值的文字區域後,其新的價值成爲會移動的第二個文本區域到頂部。我想用排序插件來解決這個問題,有人能幫我理解邏輯嗎?
固定......與@Patrick埃文斯的幫助下聊天
$($('#items .itemv').get().reverse()).each(function(){
var $prev=parseInt($(this).attr('id').replace('k','')) - 1;$prev=$('#k'+$prev);
if($(this).val() != "" &&$prev.val()==='') {
$('#items .itemv').filter(function(){return this.value=="";}).first().val( $(this).val());$(this).val('');
}
});
代碼讓我害怕聖鉬 – NicoSantangelo
_DIABLO SUMMONED_ – mishik