[英]Appending only the new selected checkbox not the previouse one
嗨,我的問題是我有一個表,我添加了用戶輸入的內容,當添加了新的tr時,添加了新的復選框,事情是當我標記該復選框並按顯示結果時出現,但是當我按另一個復選框時先前的復選框和新的復選框出現,如何只附加我標記的復選框? 這是我的代碼:
更新的Jquery:
$(document).ready(function(){
$(".btn-default").on("click",function(){
var textval = $('.form-control').val();
$('.list').append("<tr class='tabletr'><td>"+"<input type='checkbox' class='check'/> " + textval + "<br />"+"</tr></td>");
$('body').on("click", ".check" , function() {
var $this = $(this);
var textcopy = textval;
if( $this.prop('checked')){
$(".showCompleted").append("<tr><td>"+textcopy+"</td></tr>");
$(this).closest('.tabletr').remove();
textval="";
}
});
});
$(".btn-info").on("click",function(){
$(".completed").removeClass("hide");
})
});
HTML:
<body>
<div class="row">
<div class="col-md-2"></div>
<div class="col-md-8">
<div class="input-group">
<input type="text" class="form-control" placeholder="Insert your to do...">
<span class="input-group-btn">
<button class="btn btn-default" type="button">Add!</button>
</span>
</div><!-- /input-group -->
<button class="btn-info">Show Completed</button>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">To do List</h3>
</div>
<div class="panel-body">
<table class="table table-striped list">
</table>
</div>
</div>
<div class="panel panel-default completed hide">
<div class="panel-heading">
<h3 class="panel-title">Completed</h3>
</div>
<div class="panel-body">
<table class="table table-striped showCompleted">
</table>
</div>
</div>
</div><!-- /.col-lg-6 -->
<div class="col-md-2"></div>
</div>
</body>
問題是因為每當在文本框中輸入一個值時,您就再次聲明“ click”事件。 因此,如果輸入2個值, textval
處理2個單擊事件,每個事件的textval
值不同(取決於聲明事件時的textval值)。 因此,如果您創建了兩個復選框,然后單擊其中一個(無關緊要),它將運行該事件兩次並打印兩個值。 如果添加3個復選框,則會發生相同的情況,該事件將運行3次。 如果加100,則相同。
解決方案是只聲明一次click事件-因為您已經正確使用了委托事件語法,所以它將處理隨后創建的所有復選框上的事件。 您還需要將其與textval
斷開連接-因為該值僅表示上一次更新時該文本框的值。 取而代之的是,我在所需的文本周圍使用了span
,並用一個類來標識它。 最后,我做了一個小小的更改,以使$(this)
僅被調用一次以標識當前復選框,並被分配給一個變量-反復調用jQuery構造函數(相對)很昂貴,而且浪費資源。
解決方法如下:
$(document).ready(function() {
$(".btn-default").on("click",function(){
var textval = $('.form-control').val();
$('.list').append("<tr class='tabletr'><td>"+"<input type='checkbox' class='check'/><span class='textval'>" + textval + "</span><br />"+"</tr></td>");
});
$('body').on("click", ".check" , function() {
var cbox = $(this);
var textcopy = cbox.next('.textval').text();
if(cbox.prop('checked') == true){
$(".showCompleted").append("<tr><td>"+textcopy+"</td></tr>");
cbox.closest('.tabletr').remove();
textval="";
}
});
$(".btn-info").on("click",function(){
$(".completed").removeClass("hide");
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.