启用和禁用onclick功能

时间:2019-04-09 11:00:30

标签: javascript html

我正在动态创建一个表,在其中向每列添加onclick函数。

for (var x = 0; x < r.length; x++) {
    //Setting the columns
    if (i === 1) {
        var headerCell = document.createElement("TH");
        headerCell.innerHTML = r[x];
        headerCell.id = x;
        headerCell.onclick = function () {
            sortTable(this.id, name);
        }
        row.appendChild(headerCell);

    }
}

在特定情况下,我想禁用onclick功能。这是代码,它可以正常工作。

 $('#errorTable TH').prop("onclick", null).off("click");

,在另一种情况下,我想重新连接onclick函数。那是行不通的。我要启用原始功能。...

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

创建表和添加/删除事件的方式不容易维护。我也有一些建议:

  • 查看您的代码并分别定义代码单击处理程序。
  • 如果您在项目中使用jQuery,请在任何地方使用jQuery,否则请不要在任何地方使用它。
  • 在您的代码i中未定义。

使用jQuery添加删除事件监听器

首先定义您的处理函数:

var myClickHandler = function(){
// this is your click handler
    alert('Yes!!!');
}

选择元素并分配给变量。在执行以下脚本时,<div id="clickable">Click Me!</div>必须在DOM中。

var element = $('#clickable');
// assign event listener

element.on('click',myClickHandler);

// remove event listener:

element.off('click',myClickHandler);

请注意,您必须必须告知jQuery应该删除哪个处理程序。

查看示例https://codepen.io/softberry/pen/BEpove

答案 1 :(得分:0)

另一种方法是构建一个单击处理程序,以检查“终止开关”。

var tableClickable = true;

headerCell.onclick = function () {
  if (tableClickable) {
    sortTable(this.id, name);
  }
}

//In a specific situation I want to disable the onclick function.
something.addEventListener('someEvent', function () {
  tableClickable = false;
});

//and in another situation i want to reattach the onclick function.
something.addEventListener('someOtherEvent', function () {
  tableClickable = true;
});