我正在尝试使用循环绑定jquery函数。问题是绑定的函数总是采用列表的最后一项的值。
以下是代码的简化版本:
var obj =
{
'.a':'1',
'.b':'2',
'#c':'3'
};
for (var prop in obj)
{
if (obj.hasOwnProperty(prop))
{
alert(prop + '=' + obj[prop]);
$(prop).on('click', function () {
alert(prop + '=' + obj[prop]);
ga('send', 'event', 'link', 'click', obj[prop]);
});
}
}
ga()函数模拟如下:
function ga(one, two, three, four, five)
{
alert('simulated GA(): one=' + one + ' two=' + two + ' three=' + three + ' four=' + four + ' five=' + five);
}
初始化javascript时会触发外部警报,并按预期显示所有对象属性的值。但是当点击DOM元素时,无论点击哪个DOM元素,内部警报和ga()函数都会显示最后一个属性#c的值。
此代码的目的是将对ga()的各种调用分配给由属性选择器标识的不同DOM对象。
我在想这里有一些简单而愚蠢的东西。