Javascript 多个div';s

Javascript 多个div';s,javascript,jquery,Javascript,Jquery,我有一些我正在输出的搜索结果,其形式如下: <div id="result" title="nCgQDjiotG0"><img src="http://i.ytimg.com/vi/nCgQDjiotG0/default.jpg"></div> 警报显示“searchresults”(无引号)。多个标签上不能有相同的ID。你必须解决这个问题。您可以使用相同的类,但页面中只能有一个具有给定ID值的对象 this.id将获取所单击项目的id值,一旦您清除了冲

我有一些我正在输出的搜索结果,其形式如下:

  <div id="result" title="nCgQDjiotG0"><img src="http://i.ytimg.com/vi/nCgQDjiotG0/default.jpg"></div>

警报显示“searchresults”(无引号)。

多个标签上不能有相同的ID。你必须解决这个问题。您可以使用相同的类,但页面中只能有一个具有给定ID值的对象

this.id
将获取所单击项目的id值,一旦您清除了冲突的id,这应该可以正常工作:

$('div').click(function(){
    alert(this.id);
});
此代码应该是这样的:

var search_results="<div id='result'" + video_id + " title='"+video_id+"'><img src='"+video_thumb+"'></div>";
$("#searchresults").append(search_results);
var搜索结果=”“;
$(“#搜索结果”)。追加(搜索结果);

要为每个化身和append创建一个唯一的id值,只需使用字符串即可-您无需将其转换为jQuery对象。

此外,这是利用事件委派的绝佳机会。使用这种技术,您不必担心在编程插入新DOM元素后重新绑定单击处理程序。您只有一个容器元素的处理程序(委托)

$("#searchresults").delegate("div", "click", function() {
    console.log(this.id);
});

参见您可以使用
$(this)获取标题。attr(“title”).val()

这与$(“#searchresults”)不同。find(“div”).bind(“click”,fx)?从功能上讲,这是一样的,但插入新元素后不必这样做,并且不会为每个
div
都提供一个事件处理程序,我本想问一下
直播
。使用
live
而不是
bind
是否与使用delegate实现了相同的效果?@RSG-是的,但是
live
附加到
文档
元素而不是所选的“容器”,这意味着
.delegate
live
方法有几个优点。我建议阅读这两种方法的文档。
var search_results="<div id='result'" + video_id + " title='"+video_id+"'><img src='"+video_thumb+"'></div>";
$("#searchresults").append(search_results);
$("#searchresults").delegate("div", "click", function() {
    console.log(this.id);
});