JavaScript中带有jQuery'的更干净(嵌套)闭包;s每个()

JavaScript中带有jQuery'的更干净(嵌套)闭包;s每个(),javascript,jquery,jquery-ui,closures,Javascript,Jquery,Jquery Ui,Closures,我想知道是否有一种更简洁的方法来完成each()在下面的JavaScript代码中所做的事情 $(".moreinfodialog") .before('<a href="#">Click for more info.</a>') .each(function() { var temp = this; $(this).prev("a").click(function() { $(temp).dialo

我想知道是否有一种更简洁的方法来完成
each()
在下面的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 });
$(“.moreinfodialog”)
.之前(“”)
.each(函数({
var temp=此;
$(this.prev(“a”)。单击(函数(){
$(临时)对话框(“打开”);
返回false;
});
})
.dialog({autoOpen:false,modal:true});
请注意,最后一次调用对dom元素进行了重新排序,因此
.moreinfodialog
类不再位于HREF旁边


顺便说一句:该源代码使用jquery/jquery ui对话框,用
.moreinfodialog
类隐藏div中的任何文本,并将其替换为
单击以获取更多信息。
文本。单击该文本时,将显示一个对话框,其中文本位于原始div中。

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

检查该函数,该函数用于对数组的每个元素执行相同的操作

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

对不起,我把那个贴在了事故报告上。回调函数被传递两个参数,数组键和数组项。因此,在本例中,
这个
元素
指向相同的东西。希望这有帮助。我想他的意思是。each()而不是.map()map()是个好主意,但是如果您想像我在代码中那样使用链接,您必须从map函数中“返回这个”。最后,代码的长度是相同的,但效率稍低,因为我们现在在原始数组上执行map()。(我不在乎)请使用preventDefault()并且不要返回false。-1 Woh$。每个用于对数组的每个元素执行相同的操作。$。map用于将一个数组映射到另一个数组。我认为不能将它缩短,但如果将before()与each()和dialog()分开,它看起来会更干净