【发布时间】:2014-03-06 14:54:12
【问题描述】:
我正在构建一个页面,用户可以在其中添加类似于 SO 的标签(或关键字)。添加新标签时,我会生成一个 div 并通过下面的 jquery 将其附加到容器 div 中,效果很好。
// add new keyword
$('.Add_Keyword').click(function () {
// Perform the ajax post
$.post("/Content/_AddKeyword", { "keyword": document.getElementById('Keyword').value, "ContentId": document.getElementById('ContentId').value },
function (data) {
// Successful requests get here
// Update the page elements
document.getElementById('Keyword').value = '';
var new_div = $('<div class="float-left" id=tag-"' + data.KeywordId + '">' + data.Keyword + '<a href ="#" class="Remove_Keyword" data-id="' + data.KeywordId + '">[X]</a></div>');
$('#all_tags').append(new_div);
});
});
新生成的 div 有 id=tag- 并包含关键字(文本)和锚标签,可以点击删除这个关键字。以下是删除标签的jquery:
// remove keyword
$('.Remove_Keyword').click(function () {
var keywordToRemove = $(this).attr("data-id");
$.post("/Content/_RemoveKeyword", { keywordId: keywordToRemove },
function (data) {
// Successful requests get here
// Update the page elements
debugger
if (data.IsDeleted) {
var del_div = $('#tag-' + data.DeleteId);
del_div.hide();
}
});
});
这适用于使用 GET 创建的 div,但不适用于动态生成的 div .....任何想法为什么?以下是html:
<fieldset>
<legend>Keywords</legend>
<ol>
<li>
@Html.LabelFor(m => m.Keyword)
@Html.TextBoxFor(m => m.Keyword)
</li>
<li>
<a href="#" class="Add_Keyword">Add</a>
</li>
</ol>
</fieldset>
<div id="all_tags">
@foreach (var item in @Model.KeywordList)
{
<div class="float-left" id="tag-@item.KeywordId">
@item.Keyword
<a href="#" class="Remove_Keyword" data-id="@item.KeywordId">[X]</a>
</div>
}
</div>
【问题讨论】:
标签: jquery asp.net-mvc