JavaScript中的清洁(嵌套)闭包与jQuery的each()

时间:2009-01-16 21:51:56

标签: javascript jquery jquery-ui closures

我想知道是否有更清晰(更简洁)的方法来执行每个()在跟随JavaScript代码时所做的事情。

$(".moreinfodialog")
    .before('<a href="#">Click for more info.</a>')
    .each(function() {
        var temp = this;
        $(this).prev("a").click(function() {
            $(temp).dialog("open");
            return false;
        });
    })
    .dialog({ autoOpen: false, modal: true });

请注意,最后一次调用会重新命令dom元素,因此“.moreinfodialog”类不再位于hrefs旁边。

顺便说一句:这个源使用jquery / jquery-ui对话框用“.moreinfodialog”类隐藏div中的任何文本,并将其替换为“Click for more info”。文本。单击该文本时,将显示包含原始div内文本的对话框。

1 个答案:

答案 0 :(得分:4)

编辑:这个答案与旧版jQuery相关。在较新版本中,$.map的工作方式不同。

查看$.map()函数,用于对数组的每个元素执行相同的操作。

$('.moreinfodialog').map(function(idx, element) {
    $(this).prev("a").click(function() {
            $(element).dialog("open");
            return false;
    });
});