JQuery отвязать с document.on? - PullRequest
       30

JQuery отвязать с document.on?

0 голосов
/ 17 апреля 2019

Моя кнопка срабатывает дважды. Другие сообщения SO говорят, чтобы открепить функцию щелчка от документа. Проблема в том, что элементы HTML динамически добавляются к документу, поэтому мне нужно позвонить:

$(document).on("click", "#id", function())

Но как мне "открепить" функцию click от оператора document.on?

Вот мой полный код:

//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");
}

К вашему сведению: нет другой функции щелчка, связанной с классом

1 Ответ

1 голос
/ 17 апреля 2019

Вы можете отсоединить событие так же, как связали его, но с методом off ().

http://api.jquery.com/off/

Итак, по документации вам нужно:

$(document).off('click', '#id').on("click", "#id", function())

В вашей точной задаче вам нужно:

$(document).off("click", ".btn-add-tbl-col").on("click", ".btn-add-tbl-col", addColumn);

...