jQuery 解除与 document.on 的绑定?
jQuery unbind with document.on?
我的按钮触发了两次。其他 SO 帖子说要从文档中取消绑定点击功能。问题是 HTML 元素被动态附加到文档中,所以我需要调用:
$(document).on("click", "#id", function())
但是如何从 document.on 语句中 "unbind" 点击函数?
这是我的完整代码:
//Add Column
$(document).on("click", ".btn-add-tbl-col", addColumn);
function addColumn() {
console.log("addColumn fired!"); //Console shows this statement twice when I click the button once
//Identify the table into cache
var $tbl = $("#main-tbl-sch-tbl");
//Count the number of records
var rows = $tbl.find("tr.record").length;
var columns = $tbl.find("th.tbl-column").length;
columns++;
var newCol = "<th class='tbl-column' data-id='0'>*Click*</th>";
$(newCol).insertBefore($tbl.find("th.no-click-last"));
$tbl.children("tbody.tbody-records").children("tr").each(function () {
var $td = '<td class="record-cell" data-id="0" data-isstatic="1" data-col="' + columns + '" data-row="' + rows + '" data-colID="0" data-rowID="0" data-asid="0" data-deid="0" data-isnull="1" data-nameid="0" data-tbllookupid="0" data-collookupid="0" data-munterspn="0">*Click*</td>';
$(this).append($td);
});
var newTableWidth = parseFloat((167 * columns) + 33 + 33);
$tbl.css("width", newTableWidth.toString() + "px");
}
仅供参考:没有其他点击功能绑定到 class
您可以像绑定事件一样解除绑定事件,但使用 off() 方法。
根据您需要的文档:
$(document).off('click', '#id').on("click", "#id", function())
在你的具体问题中你需要:
$(document).off("click", ".btn-add-tbl-col").on("click", ".btn-add-tbl-col", addColumn);
我的按钮触发了两次。其他 SO 帖子说要从文档中取消绑定点击功能。问题是 HTML 元素被动态附加到文档中,所以我需要调用:
$(document).on("click", "#id", function())
但是如何从 document.on 语句中 "unbind" 点击函数?
这是我的完整代码:
//Add Column
$(document).on("click", ".btn-add-tbl-col", addColumn);
function addColumn() {
console.log("addColumn fired!"); //Console shows this statement twice when I click the button once
//Identify the table into cache
var $tbl = $("#main-tbl-sch-tbl");
//Count the number of records
var rows = $tbl.find("tr.record").length;
var columns = $tbl.find("th.tbl-column").length;
columns++;
var newCol = "<th class='tbl-column' data-id='0'>*Click*</th>";
$(newCol).insertBefore($tbl.find("th.no-click-last"));
$tbl.children("tbody.tbody-records").children("tr").each(function () {
var $td = '<td class="record-cell" data-id="0" data-isstatic="1" data-col="' + columns + '" data-row="' + rows + '" data-colID="0" data-rowID="0" data-asid="0" data-deid="0" data-isnull="1" data-nameid="0" data-tbllookupid="0" data-collookupid="0" data-munterspn="0">*Click*</td>';
$(this).append($td);
});
var newTableWidth = parseFloat((167 * columns) + 33 + 33);
$tbl.css("width", newTableWidth.toString() + "px");
}
仅供参考:没有其他点击功能绑定到 class
您可以像绑定事件一样解除绑定事件,但使用 off() 方法。
根据您需要的文档:
$(document).off('click', '#id').on("click", "#id", function())
在你的具体问题中你需要:
$(document).off("click", ".btn-add-tbl-col").on("click", ".btn-add-tbl-col", addColumn);