2011-11-04 69 views
1

我有一个简单的例子:jquery如何获得标题attr?

<a id="my_videos" href="#" title="123"><img src="http://placehold.it/350x150"></a> 
<a id="my_videos" href="#" title="223"><img src="http://placehold.it/350x150"></a> 
<a id="my_videos" href="#" title="323"><img src="http://placehold.it/350x150"></a> 

$('#my_videos').live('click', function() { 
    var ide = $('#my_videos').attr('title'); 
    alert (ide); 
}); 

什么情况是,我每一次点击的值相同弹出123

我到底做错了什么?

感谢

这里是一个jsfiddle

回答

6

重命名id="my_videos"class="my_videos"。 ID应该是唯一的。然后,在事件侦听器中使用this来引用刚刚单击的元素。

<a class="my_videos" href="#" title="123"><img src="http://placehold.it/350x150"></a> 
<a class="my_videos" href="#" title="223"><img src="http://placehold.it/350x150"></a> 
<a class="my_videos" href="#" title="323"><img src="http://placehold.it/350x150"></a> 

$('.my_videos').live('click', function() { 
    var ide = this.title; 
    alert (ide); 
}); 

对于这种情况,Vanilla JavaScript更加清晰。如果你想使用jQuery拿到冠军,用途:

var ide = $(this).attr('title'); 
+0

成功,得益于 – Patrioticcow

1

你应该有this代替#my_videos

$('#my_videos').live('click', function() { 
    var ide = $(this).attr('title'); 
    alert (ide); 
}); 
2

你的情况的问题是使用相同ID的多个实例。

根据定义,ID只能在整个页面上出现一次。没有2个元素可以具有相同的ID。

这就是为什么当jQuery搜索您单击的元素时,它只会找到具有该ID的第一个元素。您必须改用类名称

另外,您应该使用$(this)来引用触发事件的元素(您单击的那个),而不是一些与选择器匹配的随机元素。

$('.my_videos').live('click', function() { //Note the classname use and not id 
    var ide = $(this).attr('title'); 
    alert(ide); 
}); 

或者使用JavaScript的本地this更短的版本:

$('.my_videos').live('click', function() { 
    var ide = this.title; 
    alert(ide); 
}); 
+0

+1添加什么为什么@Patrioticcow做不会工作。 – Craig