我有以下HTML:
<div id="main">
<a id="sub1">sub1</div>
<a id="sub2">sub2</div>
</div>
<div id="other" style="display:none">
some stuff
</div>
以及以下jQuery:
$("div#main a").click(function () {
$("#other").fadeIn(500,AlertSomething);
});
function AlertSomething()
{
alert($(this).attr("id"));
}
我想提醒从我的回叫功能中点击的锚点的ID,但警报始终显示“其他”。在文档中阅读之后:
回调不会发送任何参数,但会将其设置为DOM 元素动画。
我理解为什么,但我很好奇是否有可能做我想做的事情?
此处提供小提琴:http://jsfiddle.net/RxcRY/
答案 0 :(得分:3)
只需将您的AlertSomething
方法传递给ID。
$("div#main a").click(function () {
$("#other").fadeIn(500, AlertSomething($(this).attr("id"));
});
function AlertSomething(theID)
{
alert(theID);
}
网站注意:
您的锚标记正在使用</div>
而不是</a>
关闭。这将导致jQuery附加到第一个锚点的click事件,但不会附加到后续锚点。修复标记后,jQuery将附加到div中的每个锚点。
答案 1 :(得分:2)
.click()函数传递表示点击的事件对象。此对象的一部分是单击的目标,因此只需将事件处理程序传递给您的函数。
$("div#main a").click(function (e) {
$("#other").fadeIn(500,AlertSomething(e.target));
});
function AlertSomething(obj) {
alert($(obj).attr('id'));
}
答案 2 :(得分:0)
你可以试试这个:
$("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"));
}
答案 3 :(得分:0)
$("div#main a").click(function () {
var clickedElement = $(this);
$("#other").fadeIn(500, function() { AlertSomething(clickedElement); });
});
function AlertSomething(el)
{
alert($(el).attr("id"));
}
这可能会有所帮助