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

Ami*_*mir 6 javascript jquery closures jquery-ui

我想知道是否有更清晰(更简洁)的方法来执行每个()在遵循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 });
Run Code Online (Sandbox Code Playgroud)

请注意,最后一次调用会重新排序dom元素,因此".moreinfodialog"类不再位于hrefs旁边.

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

tj1*_*111 4

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

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

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