Javascript 向动态创建的标记添加id属性
这是JSPJavascript 向动态创建的标记添加id属性,javascript,jsp,Javascript,Jsp,这是JSP $(document).ready(function() { $("#search_button").click(function() { $('#left_child_layout').empty(); var searchElement = document.getElementById("searchText").value; $.post("/performSearch",{searchElement:searchElement},function(res
$(document).ready(function() {
$("#search_button").click(function() {
$('#left_child_layout').empty();
var searchElement = document.getElementById("searchText").value;
$.post("/performSearch",{searchElement:searchElement},function(responseJson){
var $table = $('<table>').appendTo($('#left_child_layout'));
if(responseJson.length ==0){
$('<tr>').appendTo($table)
.append($('<td>').text("No results"));
}
$.each(responseJson, function(i,obj) {
$('<tr>').appendTo($table)
.append($('<td>').html('<a id="names_from_search"><u>'+obj+'</u></a>')); //line 13
});
});
});
});
我想我在指定id时出错了。指定相同id的方法是什么?尝试执行以下操作:
$.each(responseJson, function(i,obj) {
$('<tr>').appendTo($table)
.append($('<td>').html('<a id="names_from_search" onclick="return testClick(this);"><u>'+obj+'</u></a>')); //line 13
});
}您在循环中创建了许多标记,并为每个人分配了相同的id 您需要为每个标签分配唯一id,如下所示
var count = 0;
$.each(responseJson, function(i,obj) {
$('<tr>').appendTo($table)
.append($('<td>').html('<a id="names_from_search' + count + '" ><u>'+obj+'</u></a>')); //line 13
count++;
});
var计数=0;
$.each(responseJson,function(i,obj){
$(“”).appendTo($table)
.append($('').html(''+obj+'');//第13行
计数++;
});
然后你应该为每个id设置click事件
另一个好的选择是将click事件绑定到类,而不是id否,指定id没有问题。由于标记是动态插入的,因此需要使用$.on()
将每个函数的i参数添加到锚的id中。然后,您可以向该锚点添加一个类,并将其作为单击事件的目标
$.each(responseJson, function(i,obj) {
$('<tr>').appendTo($table).append($('<td>').html('<a id="names_from_search_"' + i + ' class="my-anchor"><u>'+obj+'</u></a>'));
});
$('.my-anchor').click(function(){
alert('clicked');
});
$。每个(responseJson,函数(i,obj){
$('').appendTo($table).append($('').html(''+obj+'');
});
$('.my anchor')。单击(函数(){
警报(“点击”);
});
如果要在
元素中迭代使用ID,则不应使用ID。ID在页面上只能存在一次。这将起作用。但是我还需要
标记中包含的obj
的值?我可以将其作为参数传递给函数testClick()
?
var count = 0;
$.each(responseJson, function(i,obj) {
$('<tr>').appendTo($table)
.append($('<td>').html('<a id="names_from_search' + count + '" ><u>'+obj+'</u></a>')); //line 13
count++;
});
$("#search_button").on('click', '#names_from_search', function(){
alert("clicked");
});
$.each(responseJson, function(i,obj) {
$('<tr>').appendTo($table).append($('<td>').html('<a id="names_from_search_"' + i + ' class="my-anchor"><u>'+obj+'</u></a>'));
});
$('.my-anchor').click(function(){
alert('clicked');
});