我在类link_div
中有2个链接。
<div class="link_div">
<a id="upload_link" href='' >Upload File</a>
<a id="search_link" href='' >Search File </a>
</div>
我的要求是点击每个链接div
将显示。显示的div内容几乎相同,除了小的改动。所以我想编写这样的代码:
$(".link_div a").click(function(e){
e.preventDefault();
alert($(".link_div a").attr('id'));
$("._new_filesharing_div").show();
return false;
});
我的想法是获取点击链接的ID并使用if循环检查点击了哪个链接,从而在点击upload
并为{{1}添加按钮时为upload file link
添加按钮点击search
。其余内容几乎相同。
在这里,我总是将点击的search file link
链接作为Id
,尽管用户点击了其他链接。我认为jquery正在获取第一个标记的ID。我可以知道是否可以获取所点击链接的ID,或者我应该单独为每个链接编写代码
答案 0 :(得分:5)
在事件处理程序中,单击的元素是this
(更具体地说,是您绑定的元素,可以是真正单击的元素的父元素。)
更改
alert($(".link_div a").attr('id'));
到
alert(this.id);
注意:不要仅为获取DOM对象的标准属性而创建jQuery对象。 $(this).attr('id')
不仅速度慢,而且可读性也差,而且包装完全没用。
答案 1 :(得分:0)
$(".link_div a")
会返回a
中的所有.link_div
个标记,而attr
会返回该集合中第一个元素的id
。所以您的代码不管用。在此方案中实现目标的首选方法是使用:
this.id
当jQuery将事件回调函数 context 设置为 触发 的元素时,它会返回点击的链接事件。
但是如果你需要在代码的后半部分使用jquery对象。你可以用这种方式对它进行排序:
var aTag = $(this);
aTag.data('blaKey','blaValue');