JQuery:为动态生成的DOM添加事件处理程序,触发另一个处理程序

时间:2013-07-03 07:41:45

标签: javascript jquery event-handling

我有一个包含大量DOM元素#item1到#itemXX共享类.itembutton的页面,并且有一个通用的.itembutton点击处理程序可以正常工作。

在这一侧是一个“搜索”栏,它接受查询,查询sql以返回可能的匹配列表,然后将新DOM添加到“搜索结果”侧栏。这很好用,DOM出现了。

但是,我正在尝试将click事件绑定到每个搜索结果,以便它们在页面的其他部分中触发匹配的DOM。这种情况没有发生 - 结果出现了,我的调试器说每个结果都有自己的点击事件,它只是没有做任何事情。我无法分辨点击事件的实际作用。

页面在这里(编辑:删除链接,不再有问题,所以不相关),但需要注意的是,只有第一列项目存在于sql后端

此处的相关代码序列

$("#searchbar").change(function(){
 if($(this).val()){ //empty check
   $("#searchresults").html(""); //empty result table
   var query = this.value;
   $.getJSON("search.php", {q:query}).done(function(data){ //THIS IS A 2D JSON ARRAY
     if (data.length == 0){
       $("#searchresults").html("Nothing found! Try another search.");
     } else {
       var i = 0;
       while (i < data.length){

         var newElement = $("<div class=\"searchresultbar\" id=\"result"+i+"\"><img class=\"searchicon\" src="+data[i][11]+"><span class=\"searchname\">"+data[i][1]+"</span></div>");
         $("#searchresults").append(newElement);

         $("#result"+i).on("click", function(data, i){
           return function(data, i){
             $("#"+data[i][0]).trigger("click");
           };
         });

         /*newElement.on("click", function(idname){
           return function(){
              $(idname).trigger("click");
           };
         });*/
         i++;
       }
     }
   });
 }
});
编辑:不知道这里出了什么问题,但根据评论,我使用了委托的处理程序,当我在附加的div的标题字段中隐藏适当的dom ID时,它就像魅力一样

0 个答案:

没有答案