我已经使用jQuery开发了一个代码,该代码已经具有3行并具有一个文本框,在其中可以添加与先前行类似的更多行。最初,jQuery适用于前3行(经过硬编码)。我想将相同的jQuery应用于以后动态添加的行。那我该怎么办呢?代码在这里:
$('input[type="checkbox"]').click(function() {
$(this).next('label').toggleClass('checked', '');
});
$('.glyphicon.glyphicon-trash').click(function() {
$(this).closest("tr").remove();
});
var i = 4;
$("input[type='text']").keypress(function(event) {
if (event.which === 13) {
var Text = $(this).val();
$(this).val("");
var j = "checkbox" + i;
$("tbody").append("<tr><td><div class='checkbox'><input type='checkbox' id='" + j + "'/><label> " + Text + "</label><label class='glyphicon glyphicon-trash' id='" + i + "'></label></div></td></tr>");
i = i + 1;
}
});
.checked {
text-decoration: line-through;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container">
<table class="table">
<thead>
<tr>
<th>To Do List</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox1" /><label>Task 1</label><label class="glyphicon glyphicon-trash"></label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox2" /><label>Task 2</label><label class="glyphicon glyphicon-trash"></label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox3" /><label>Task 3</label><label class="glyphicon glyphicon-trash" id="3"></label>
</div>
</td>
</tr>
</tbody>
</table>
<div class="row">
<input type="text" placeholder="Add New Todo">
</div>
</div>
答案 0 :(得分:0)
使用jquery的全局调用。
$('table.table').on('keypress', "input[type='text']", function(event){
if(event.which === 13){
var Text = $(this).val();
$(this).val("");
var j="checkbox"+i;
$("tbody").append("<tr><td><div class='checkbox'><input type='checkbox' id='"+j+"'/><label> " + Text + "</label><label class='glyphicon glyphicon-trash' id='"+i+"'></label></div></td></tr>");
i=i+1;
}
});
答案 1 :(得分:0)
您需要委托事件处理程序on('click')
。您的点击必须是
$('tbody').on('click', 'input[type="checkbox"]', function() {
$(this).next('label').toggleClass('checked', '');
});
和
$('tbody').on('click', '.glyphicon.glyphicon-trash', function(){
$(this).closest("tr").remove();
});
$('tbody').on('click', 'input[type="checkbox"]', function() {
$(this).next('label').toggleClass('checked', '');
});
$('tbody').on('click', '.glyphicon.glyphicon-trash', function() {
$(this).closest("tr").remove();
});
var i = 4;
$("input[type='text']").keypress(function(event) {
if (event.which === 13) {
var Text = $(this).val();
$(this).val("");
var j = "checkbox" + i;
$("tbody").append("<tr><td><div class='checkbox'><input type='checkbox' id='" + j + "'/><label> " + Text + "</label><label class='glyphicon glyphicon-trash' id='" + i + "'></label></div></td></tr>");
i = i + 1;
}
});
.checked {
text-decoration: line-through;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container">
<table class="table">
<thead>
<tr>
<th>To Do List</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox1" /><label>Task 1</label><label class="glyphicon glyphicon-trash"></label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox2" /><label>Task 2</label><label class="glyphicon glyphicon-trash"></label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox3" /><label>Task 3</label><label class="glyphicon glyphicon-trash" id="3"></label>
</div>
</td>
</tr>
</tbody>
</table>
<div class="row">
<input type="text" placeholder="Add New Todo">
</div>
</div>
答案 2 :(得分:0)
使用:
$('.container').on('click', '.elementClass', function() {
// code
});
因为您动态地加载元素
$('.container').on('click', 'input[type="checkbox"]', function() {
$(this).next('label').toggleClass('checked', '');
});
$('.container').on('click', '.glyphicon.glyphicon-trash', function() {
$(this).closest("tr").remove();
});
var i = 4;
$('.container').on('keypress', "input[type='text']", function(event) {
if (event.which === 13) {
var Text = $(this).val();
$(this).val("");
var j = "checkbox" + i;
$("tbody").append("<tr><td><div class='checkbox'><input type='checkbox' id='" + j + "'/><label> " + Text + "</label><label class='glyphicon glyphicon-trash' id='" + i + "'></label></div></td></tr>");
i = i + 1;
}
});
.checked {
text-decoration: line-through;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container">
<table class="table">
<thead>
<tr>
<th>To Do List</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox1" /><label>Task 1</label><label class="glyphicon glyphicon-trash"></label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox2" /><label>Task 2</label><label class="glyphicon glyphicon-trash"></label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<input type="checkbox" id="checkbox3" /><label>Task 3</label><label class="glyphicon glyphicon-trash" id="3"></label>
</div>
</td>
</tr>
</tbody>
</table>
<div class="row">
<input type="text" placeholder="Add New Todo">
</div>
</div>
答案 3 :(得分:0)
您当前的click函数将事件绑定到已经存在的父级。因此,您可以使用document
....
$(document).on('click','input[type="checkbox"]',function(){
$(this).next('label').toggleClass('checked', '');
});
$(document).on('click','.glyphicon.glyphicon-trash',function(){
$(this).closest("tr").remove();
});
答案 4 :(得分:0)
This perfectly adds a new text box when click on "+"(plus) button
<html>
<head>
<title>Dynamic Form</title>
<script language="javascript">
function changeIt()
{
var i = 1;
my_div.innerHTML = my_div.innerHTML +"<br><input type='text' name='mytext'+ i>"
}
</script>
</head>
<body>
<form name="form" action="post" method="">
<input type="text" name=t1>
<input type="button" value="+" onClick="changeIt()">
<div id="my_div"></div>
</body>
for JSFiddle click here [a link](https://jsfiddle.net/0k7uy2sp/)