首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从jQuery中的回调函数访问单击元素吗?

问可以从jQuery中的回调函数访问单击元素吗?
EN

Stack Overflow用户
提问于 2011-08-16 16:31:32
回答 4查看 1.1K关注 0票数 4

我有以下HTML:

代码语言:javascript
复制
<div id="main">
    <a id="sub1">sub1</div>
    <a id="sub2">sub2</div>
</div>
<div id="other" style="display:none">
 some stuff    
</div>

以及下面的jQuery:

代码语言:javascript
复制
$("div#main a").click(function () {
    $("#other").fadeIn(500,AlertSomething);
});

function AlertSomething()
{
     alert($(this).attr("id"));   
}

我想提醒从我的回调函数点击的锚的ID,但警报总是显示“其他”。在文档中阅读了这些内容之后:

回调不被发送任何参数,但这被设置为动画化的DOM元素。

我明白为什么,但我很好奇是否可以做我想做的事?

这里提供小提琴:http://jsfiddle.net/RxcRY/

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-16 16:35:02

只需将ID传递给AlertSomething方法即可。

代码语言:javascript
复制
$("div#main a").click(function () {
    $("#other").fadeIn(500, AlertSomething($(this).attr("id"));
});

function AlertSomething(theID)
{
    alert(theID);   
}

这是工作的小提琴。

站点备注:

您的锚标记正在使用</div>而不是</a>关闭。这将导致jQuery附加到第一个锚点的单击事件,而不是随后的锚点。一旦您修复了标记,jQuery将附加到div中的每个锚点。

票数 4
EN

Stack Overflow用户

发布于 2011-08-16 16:38:17

.click()函数传入表示单击的事件对象。此对象的一部分是单击的目标,因此只需将事件处理程序传递给您的函数。

代码语言:javascript
复制
$("div#main a").click(function (e) {
    $("#other").fadeIn(500,AlertSomething(e.target));
});

function AlertSomething(obj) {
   alert($(obj).attr('id'));
}
票数 2
EN

Stack Overflow用户

发布于 2011-08-16 16:36:22

你可以试试这个:

代码语言:javascript
复制
$("div#main a").click(function (e) {
    $("#other").fadeIn(500,AlertSomething(e));
});

function AlertSomething(e)
{
    console.log(e); // this will show you the "click" event. 
    //alert($(this).attr("id"));   
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7081591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档