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);
});