这是我的问题。停止jQuery双重绑定点击事件(最佳做法)
我正在使用MVC,并在很多索引视图中,我有一个带有URL的“删除”按钮/徽标。所以我想让这个删除函数与jQuery和AJAX一起工作。
我的按钮:
<a class="delbtn" href='<%= Url.Action("Delete", new {id=item.Vrst_ID}) %>'>
<img src="<%= Url.Content("~/img/cancel.png") %>" alt="Delete" width="16" /></a>
每页jQuery代码:
<script type="text/javascript">
$(document).ready(function() {
$(".delbtn").click(function() {
var msg = "set " + $(this).parent().parent().find(".vrsttitel").text() + " ";
deleteConfirmation(msg, this);
return false;
});
});
</script>
其中包括在js文件的代码。
function deleteConfirmation(msg, handler) {
var showIt = function (hash) {
hash.w.find("#modaltekst").text(msg);
$("#delmodal #btnJa").click(function() {
$("#delmodal").jqmHide();
setHighlight("Verwijderen...");
$.post($(handler).attr("href"), null, function (data) {
if (data.succes) {
setHighlightOK("Verwijderd");
$(handler).parent().parent().fadeOut("slow");
} else {
if (data.error != "") {
setError(data.error);
} else {
setError("Verwijderen mislukt.");
}
}
}, "json");
});
$("#delmodal #btnNee").click(function() {
$("#delmodal").jqmHide();
});
$("#delmodal").show();
return false;
};
$("#delmodal").jqm({ onShow: showIt }).jqmShow();
}
基本上这个工作,但我第二次删除的东西,在$。员额被执行了两次,因为点击功能被添加到$(“#delmodal #btnJa”)的两倍。
所以我想分开那些是和否按钮(从deletemodal),但在'是'按钮(#btnJa)我需要处理程序采取其URL。
为了解决这个问题,我想在使用后取消绑定click事件,从而使它不会建立点击事件,但我认为这不是最佳实践。
我应该怎么做?
谢谢。关于ID的好点也是。 然而一个小问题。我需要DOM对象来做fadeOut,而这看起来不适用于.data()。 – Stefanvds 2010-08-20 10:32:38
@Stefanvds - 完全忽略了'fadeOut()',给出更新后的答案,你可以在数据上存储任何东西,包括原始对象的引用:) – 2010-08-20 10:38:26
到编辑它时,我也发现了它,我需要将它作为一个jquery对象进行封装:)谢谢! – Stefanvds 2010-08-20 10:39:35