我在类link_div
中有两个链接。
<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 file link
时为upload
添加按钮,并在单击search file link
时为search
添加按钮。其余内容几乎相同。
在这里,即使用户单击了另一个链接,我也总是将链接的已单击Id
作为upload_link
。我认为jquery取的是第一个标签的id。我想知道是否可以获得点击链接的ID或者我应该为每个链接分别编写代码
在事件处理程序中,被单击的元素是this
(更具体地说,是您绑定的元素,它可以是真正被单击的元素的父元素)。
alert($(".link_div a").attr('id'));
alert(this.id);
注意:不要仅仅为了获得DOM对象的标准属性而创建jQuery对象。$(this).attr('id')
不仅速度慢,而且可读性差,而且换行完全没用。
$(".link_div a")
将返回.link_div
中的所有a
标记,attr
将返回该集合的第一个元素的id
。所以你的代码不能工作。在此场景中实现目标的首选方法是使用:
this.id
当jQuery设置事件回调函数context到触发事件的元素时,它将返回被点击的链接。
但是如果在代码的后面部分需要jquery对象。你可以这样排序:
var aTag = $(this);
aTag.data('blaKey','blaValue');