是否可以使用<a> tag in jquery</a>标识多个链接

时间:2014-05-14 08:02:16

标签: jquery html hyperlink

我在类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,或者我应该单独为每个链接编写代码

2 个答案:

答案 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');