Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   td не реагирует на click (https://javascript.ru/forum/misc/59905-td-ne-reagiruet-na-click.html)

Dexa 02.12.2015 16:35

td не реагирует на click
 
Добрый день. Столкнулся с проблемой. Создаю таблицу с помощью js. Таблица создается, заполняю ее картинками. Здесь тоже все работает. После этого все картинки нужно сделать "закрытыми". Для этого через background-image в css каждый td делаю серым квадратом. Это тоже работает. Проблема в следующем: при нажатии на элемент td, у этого самого td нужно убрать класс. Но при нажатии ничего не происходит, click не срабатывает.
Мой js:
var IndexController = function () {

};

IndexController.prototype.createTable = function () {
    $.getJSON("https://kde.link/test/get_field_size.php",
        function(data){
            var get_width = data.width;
            var get_height = data.height;
// здесь какой-то код
// .
// .
// .
            var div = document.getElementsByTagName("div")[4];
            var tbl = document.createElement("table");
            var tblBody = document.createElement("tbody");

            for(var current_row = 1; current_row <= get_height; current_row++){
                var row = document.createElement("tr");
                for(var current_cell = 1; current_cell <= get_width; current_cell++){
                    var cell = document.createElement("td");
                    row.appendChild(cell);
                    $(cell).addClass('image1');
                    cell.innerHTML += "<img src=" + shuffled_mass[tmp] + " class='image2'>";
                    tmp++;
                }
                tblBody.appendChild(row);
            }
            tbl.appendChild(tblBody);
            div.appendChild(tbl);
        });

};

IndexController.prototype.gameplay = function(){
    // Здесь тоже какой-то код
};

IndexController.prototype.init = function () {

    var that = this;

    $('.create-table').on('click', function () {
        that.createTable();
        return false;
    });

    $('td').on('click', function () {
        that.gameplay();
        return false;
    });

};

$(function () {
    var indexController = new IndexController();
    indexController.init();
});


Не могу понять почему не работает обработчик нажатия. Помогите, пожалуйста, кто-нибудь.

рони 02.12.2015 16:46

Цитата:

Сообщение от Dexa
при нажатии на элемент td

обычно причина - нельзя повесить обработку события на то что не существует
обычное решение:
создали элемент/ы - повесили обработку клик.
второй способ
обработку клик ставят на элемент который постоянно есть на странице и в котором появятся нужные элементы.

рони 02.12.2015 16:50

Dexa,
возможно достаточно перенести строки 45-46 в строку 52 ... но тогда как - то непонятно -- кликая постоянно идёт создание таблицы и бесконечно навешиватся клики. :)

рони 02.12.2015 17:46

Dexa,
лучше поставить клик на tbl в конце строки 30
$(tbl).on('click' , 'td', ...)


Часовой пояс GMT +3, время: 16:45.