我有一些我输出的搜索结果是这种形式:
<div id="result" title="nCgQDjiotG0"><img src="http://i.ytimg.com/vi/nCgQDjiotG0/default.jpg"></div>
每个结果都有一个。我正在尝试检测哪一个被点击然后做一些事情。每个结果都有一个唯一的标题,但ID相同。我如何使用.click()来知道哪一个被点击了所以我可以获得它的ID并使用它?
以下是我从上面获取HTML的方法:
$.each(response.data.items, function(i,data)
{
var video_id=data.id;
var video_title=data.title;
var video_thumb=data.thumbnail.sqDefault;
var search_results="<div id='result' title='"+video_id+"'><img src='"+video_thumb+"'></div>";
$("#searchresults").append($(search_results));
我试过
$('div').click(function(){
alert(this.id);
});
并且警报显示“searchresults”(没有引号)。
答案 0 :(得分:2)
此外,这是利用事件委派的绝佳机会。使用此技术,您无需担心在以编程方式插入新DOM元素后重新绑定点击处理程序。您只有一个处理程序(委托)到容器元素。
$("#searchresults").delegate("div", "click", function() {
console.log(this.id);
});
请参阅.delegate
答案 1 :(得分:0)
您不能在多个标签上使用相同的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);
为每个化身添加一个唯一的id值,append只接受字符串 - 你不需要把它变成一个jQuery对象。
答案 2 :(得分:0)
您可以使用$(this).attr("title").val()