我不知道任何基于 jQuery 的插件。
如果我必须这样做,我会使用一些 html 元素对电子邮件地址进行分组,然后按类(viewMode 和 editMode)进行分组。
您可以制作一个$(emailSources).each()循环来输出 html 代码,如下所示:
<div id="emailsContainer">
<div id="johndoe@aol.com" style="min-width:10px; float:left;">
<span></span>
<img class="viewMode" src="pathToPencil" onclick="EmailChangeToEditMode("johndoe@aol.com");" />
<img class="viewMode" src="pathToDelete" onclick="EmailDelete("johndoe@aol.com");" />
<input type="text" class="editMode" />
<img class="editMode" src="pathToOkButton" onclick="EmailSaveChanges("johndoe@aol.com");" />
</div>
<div id="jane@aol.com" style="min-width:10px; float:left;">
<span></span>
<img class="viewMode" src="pathToPencil" onclick="EmailChangeToEditMode("jane@aol.com");" />
<img class="viewMode" src="pathToDelete" onclick="EmailDelete("jane@aol.com");" />
<input type="text" class="editMode" />
<img class="editMode" src="pathToOkButton" onclick="EmailSaveChanges("jane@aol.com");" />
</div>
</div>
这些是javascript函数:
function EmailChangeToEditMode(containerId) {
$(containerId).find(".viewMode").hide(); // this will hide all the elements of the ViewMode
$(containerId).find(".editMode").show(); // this will show all the elements of the EditMode
}
function EmailDelete(containerId) {
$(containerId).remove(); // removes from the DOM
}
function EmailSaveChanges(containerId) {
var newEmail = $(containerId).find("input[class='editMode'][type='text']").value; // gets the new Email Address typed from the user
$(containerId).find("span").text(newEmail) // sets the new email address that will be showed
$(containerId).find(".viewMode").show();
$(containerId).find(".editMode").hide();
}
基本上,您正在为电子邮件地址(div)使用容器。然后你有编辑模式和查看模式的 html 元素。javascript代码正在使用 hide(); 和显示();处理你想做的事情。
您还必须在生成 html 代码时隐藏所有 editMode 元素(它以 viewMode 元素开头)。您还必须在 span 上设置当前电子邮件地址的文本。
此代码可能无法 100% 工作,因为我在没有测试的情况下编写了此代码