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内文本的对话框.
编辑: 这个答案与旧版本的 jQuery 相关。在新版本中$.map工作方式有所不同。
查看$.map()函数,用于对数组的每个元素执行相同的操作。
$('.moreinfodialog').map(function(idx, element) {
$(this).prev("a").click(function() {
$(element).dialog("open");
return false;
});
});
Run Code Online (Sandbox Code Playgroud)