一个href click()和闭包

cla*_*rkk 0 jquery

var DAYBOOK = {
    22 : 'hmm',
    9 : 'waaaah'
};

function cnstr_submenu(){
    var elm = $('#test');
    for(var key in DAYBOOK){
        (function(key){
            elm.append('<a href="#">'+DAYBOOK[key]+'</a><br>').click(function(){
                alert(key);
            });
        })(key);
    }
};
cnstr_submenu();
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/9AqVK/

为什么单击链接时会提醒DAYBOOK对象中的所有属性?

pim*_*vdb 5

elm.append(...).click实际上将绑定clickelm(div).因此,当单击链接时,链接不会做太多 - 而是执行的单击处理程序div,其具有click两次的函数绑定.

如果您希望每个链接都提醒一个值,请将该函数绑定到链接:

elm.append( // append the following element
    // create a link with a click handler bound
    $('<a href="#">'+DAYBOOK[key]+'</a><br>').click(function(){
            alert(key);
    })
);
Run Code Online (Sandbox Code Playgroud)