- Я хочу, чтобы пользователь просто щелкнул строку, которая затем установит или снимет флажок.
- Я хочу, чтобы строка анимировалась и перемещалась вверх или вниз, чтобы отображались отмеченные элементы внизу списка.
Всё это прекрасно работает! : -)
Но когда я нажимаю фактический флажок, он не проверяется. Я пробовал использовать stopPropagation, но вместо этого он просто останавливает анимацию.
Я перепробовал множество вещей, но ничего не помогло. : - (
Что делать ??: /
Здесь вы можете увидеть демо:
$(document).ready(function () {
$('.row').click(function (){
var checkbox = $(this).find('input[type=checkbox]');
checkbox.prop("checked", !checkbox.prop("checked"));
var upordown = checkbox.prop("checked");
if(upordown){
$( this ).slideUp(function() {$( this ).insertAfter( "#foo" );
$( this ).slideDown();
});
}
else{
$( this ).slideUp(function() {$( this ).insertBefore( "#foo" );
$( this ).slideDown();
});
}
});
// $('input[type=checkbox]').click(function (e)
// {
// e.stopPropagation();
// return true;
// });
});
.row {
width: 300px;
padding: 4px;
margin: 2px;
border:1px solid #666;
}
.left {
float: left;
width: 25px;
}
.clear {
clear: both;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row">Todo</div>
<div class="row">
<div class="left">
<input type="checkbox" value="1"/>
</div>
<div class="center">Item1</div>
<div class="clear"></div>
</div>
<div class="row">
<div class="left">
<input type="checkbox" value="2"/>
</div>
<div class="center">Item2</div>
<div class="clear"></div>
</div>
<div class="row">
<div class="left">
<input type="checkbox" value="4"/>
</div>
<div class="center">Item3</div>
<div class="clear"></div>
</div>
<div class="row">
<div class="left">
<input type="checkbox" value="6"/>
</div>
<div class="center">Item4</div>
<div class="clear"></div>
</div>
<div class="row">
<div class="left">
<input type="checkbox" value="11"/>
</div>
<div class="center">Item5</div>
<div class="clear"></div>
</div>
<div class="row" id="foo" style="Display: none;"></div>