[英]How to change the Id of row dynamically in JQuery
这是我的简单 HTML 页面。 在这个程序中,当我按 Enter 创建动态行时,它会创建一个新行。
但问题是,我想改变像每行的id search1
, search2
, search3
。
为了检查这一点,我在警报中显示 id,但在警报框中只显示第一行 id。 当我检查页面并检查第二行的 id 时,它更改了 id。
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css" href="Bootstrap/bootstrap.css" rel="stylesheet"/>
<title>JSP Page</title>
</head>
<body>
<br><br>
<center>
<div class="container-fluid">
<div class="row">
<div class="col-lg-8">
<div class="table-responsive">
<table class="table-responsive table-bordered">
<thead>
<tr>
<th>No.</th>
<th>Name</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">1</td>
<td><input type="text" class="inputs searchName" name="pname_1" size="15" id="search1"/></td>
<td><input type="text" class="inputs lst" size="15" /></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</center>
<script type="text/javascript" src="Bootstrap/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="Bootstrap/bootstrap.js"></script>
这是创建动态行的 JQuery:
$(document).keypress(
function(event){
if (event.which == '13') {
event.preventDefault();
}
});
var i = $('table tr').length;
var count=0;
$(document).on('keyup', '.lst', function(e)
{
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13)
{
count = $('table tr').length;
html = '<tr>';
html += '<td align="center">'+ i +'</td>';
html += '<td><input type="text" class="inputs searchName" size="15" name="pname_' + i + '" id="search'+i+'" /></td>';
html += '<td><input type="text" class="inputs lst" size="15" /></td>';
html += '</tr>';
$('table').append(html);
$(this).focus().select();
i++;
}
});
$(document).on('keydown', '.inputs', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code==13) {
var index = $('.inputs').index(this) + 1;
$('.inputs').eq(index).focus();
}
});
$('.searchName').keyup(function()
{
var id=$(this).attr("id");
alert(id);
});
我认为你需要使用$(document).on而不是 $('.searchName').keyup 函数
试试下面的代码
$(document).on('keyup', '.searchName', function() {
var id=$(this).attr("id");
alert(id);
});
这是工作的 jsfiddle: https ://jsfiddle.net/r9hpyabh/
不得不改变你的一些代码,发现了很多错误,但我想我已经把你摆平了。
首先你需要定义你的 html var 所以我添加了var html;
其次,你的html
var 复制了你以前的 html,所以你需要用每个新的$(document).on('keyup', '.lst', function(e) {
所以我添加了html = '';
第三,您需要将$('.searchName').keyup(function() {
更改$(document).on('keyup', '.searchName', function() {
以说明您的动态内容。
请记住,每当您处理动态内容时,您都需要使用$(document).on('event', 'class or id', function() {
来捕获该动态内容。
var i = $('table tr').length; var count = 0; var html; $(document).on('keyup', '.lst', function(e) { html = ''; var code = (e.keyCode ? e.keyCode : e.which); if (code == 13) { count = $('table tr').length; html += '<tr>'; html += '<td align="center">' + i + '</td>'; html += '<td><input type="text" class="inputs searchName" size="15" name="pname_' + i + '" id="search' + i + '" /></td>'; html += '<td><input type="text" class="inputs lst" size="15" /></td>'; html += '</tr>'; $('tbody').append(html); $(this).focus().select(); i++; } }); $(document).on('keydown', '.inputs', function(e) { var code = (e.keyCode ? e.keyCode : e.which); if (code == 13) { var index = $('.inputs').index(this) + 1; $('.inputs').eq(index).focus(); } }); $(document).on('keyup', '.searchName', function() { var id = $(this).attr("id"); alert(id); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <center> <div class="container-fluid"> <div class="row"> <div class="col-lg-8"> <div class="table-responsive"> <table class="table-responsive table-bordered"> <thead> <tr> <th>No.</th> <th>Name</th> <th>Price</th> </tr> </thead> <tbody> <tr> <td align="center">1</td> <td><input type="text" class="inputs searchName" name="pname_1" size="15" id="search1" /></td> <td><input type="text" class="inputs lst" size="15" /></td> </tr> </tbody> </table> </div> </div> </div> </div> </center>
我认为您应该了解 jquery 的工作原理。 这都是关于选择器的。 应用于id
选择器选择零或一个元素。 应用于类的选择器选择更多元素。 您应该阅读常见问题解答: 如何使用类或 ID 选择项目? .
阅读这篇文章后,我开始了解您的代码有什么问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.