6

我想知道是否有一种更简洁(更简洁)的方式来执行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 });

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

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

4

1 回答 1

4

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

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

$('.moreinfodialog').map(function(idx, element) {
    $(this).prev("a").click(function() {
            $(element).dialog("open");
            return false;
    });
});
于 2009-01-16T22:05:21.527 回答