JQuery:点击了哪个元素?

时间:2010-03-23 22:27:44

标签: jquery events

我有一个包含链接的列表。这些链接是指向同一页面上的表的链接。我想要做的是我在列表中单击的任何链接,它将显示其相应的表并隐藏所有其他链接。

如果没有为列表中的每个链接及其相应的表添加不同的id / class,有没有办法找出单击了哪个元素并show()其表?

据我所知,JQuery在其选择器上返回一个数组对象。如何找出点击数组的哪个元素?

我试过使用event.which,但我有点失落。

非常感谢帮助!

2 个答案:

答案 0 :(得分:2)

CSS:

<style type="text/css">
    table {display:none;}
</style>

脚本:

$(document).ready(function() {

        $.each($('a'), function(i) {

            var link = $(this);

            link.click(function() {

                $('table').hide().eq(i).fadeIn();
            });

        });
    });

HTML:

<ul>
    <li><a href="#">first</a></li>
    <li><a href="#">second</a></li>
    <li><a href="#">third</a></li>
</ul>

<table>
    <tr>
        <td>first</td>
    </tr>
</table>
<table>
    <tr>
        <td>second</td>
    </tr>
</table>
<table>
    <tr>
        <td>third</td>
    </tr>
</table>

答案 1 :(得分:1)

$('a')。单击将单个事件附加到元素但是每个(相当于c#中的foreach)遍历选择器的所有匹配元素

每个函数都有一个内置功能,可以将“i”变量添加为这些元素的索引。

您可以使用for(i = 0; i&lt; bla.length; i ++)轻松地重新创建它......但每个都包含它。

最后我已经将所有表都设置为隐藏在css中,并在链的开头使用了hide函数,因为如果我没有例如第一个表因为点击变成display:block然后if我点击第二个链接然后第二个表变得可见,第一个表变得不可见。

所以隐藏确保每个表都被隐藏,并且之后只显示与索引i匹配的表。