Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向动态创建的标记添加id属性_Javascript_Jsp - Fatal编程技术网

Javascript 向动态创建的标记添加id属性

Javascript 向动态创建的标记添加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

这是JSP

$(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');
});