我尝试使用appendTo将列表项移到底部。当我使用' ul'和' li'符号,但我希望它只在单击复选框时发生。所以我试着使用this.parent(),但我有点卡住了。无法查看此处出现的问题.. fiddle
我的HTML:
<div class='todo_list'>
<div class='add_list'>+ List</div><br>
<h3 contenteditable='true'>New List</h3>
<ul>
<li>
<input type='checkbox' class='task_status'>
<p class='task' contenteditable='true'> </p>
<span class='drag'></span>
</li>
</ul>
<div class='add_task'>+</div><br>
</div>
剧本:
$('.todo_list').on('click', '.task_status', function(e) {
$(this).parent('li').css('opacity', '1');
if ( $(this).is(':checked') ) {
$(this).parent('li').css('opacity', '.5').delay(500).slideUp(500, function () {
$(this).parent('li').parent('ul').appendTo( $(this).parent('li') );
$(this).slideDown(500);
});
};
});
答案 0 :(得分:3)
在slideUp
的回调函数中,this
的值发生了变化,现在它是LI,而不是复选框
$('.todo_list').on('click', '.task_status', function(e) {
var LI = $(this).parent('li').css('opacity', '1');
if ( $(this).is(':checked') ) {
LI.css('opacity', '.5').delay(500).slideUp(500, function () {
$(this).parent('ul').append( LI.slideDown(500) );
});
};
});