這是我的問題。停止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