我想知道是否有更清晰(更简洁)的方法来执行每个()在跟随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内文本的对话框。
答案 0 :(得分:4)
编辑:这个答案与旧版jQuery相关。在较新版本中,$.map
的工作方式不同。
查看$.map()函数,用于对数组的每个元素执行相同的操作。
$('.moreinfodialog').map(function(idx, element) {
$(this).prev("a").click(function() {
$(element).dialog("open");
return false;
});
});