JavaScript的后期绑定(bind)很棒。但是我想怎么早绑定(bind)呢?
我正在使用jQuery在div循环中添加带有事件处理程序的链接。变量“aTag”在循环中更改。当我稍后单击链接时,所有链接都会提示相同的消息,这是'aTag'的最后一个值。如何将其他警报消息绑定(bind)到所有链接?
所有链接应在添加事件处理程序时(而不是在单击事件处理机时)警告“aTag”具有的值。
for (aTag in tagList) {
if (tagList.hasOwnProperty(aTag)) {
nextTag = $('<a href="#"></a>');
nextTag.text(aTag);
nextTag.click(function() { alert(aTag); });
$('#mydiv').append(nextTag);
$('#mydiv').append(' ');
}
}
最佳答案
您可以将数据传递给bind
方法:
nextTag.bind('click', {aTag: aTag}, function(event) {
alert(event.data.aTag);
});
这将复制
aTag
,因此每个事件处理程序将具有不同的值。您的用例正是bind
的此参数存在的原因。完整代码:
for (aTag in tagList) {
if (tagList.hasOwnProperty(aTag)) {
nextTag = $('<a href="#"></a>');
nextTag.text(aTag);
nextTag.bind('click', {aTag: aTag}, function(event) {
alert(event.data.aTag);
});
$('#mydiv').append(nextTag);
$('#mydiv').append(' ');
}
}