表格单元格事件侦听器

问题描述 投票:3回答:2

我有一段时间坚持这个代码,不知道什么是错的!这个jQuery代码函数用于游戏的单个网页应用程序。我需要通过点击它来更改表格单元格背景颜色,但它不起作用

$("document").ready(function() {
    var y, x, cellColor;
    //console.log("tata");

    $("#sizePicker").submit(function(event) {
        event.preventDefault();
    });

    $('input[type="submit"]').click(function makeGrid(y, x) {
        y = Number($("#inputHeight").val());
        x = Number($("#inputWeight").val());
        $("#pixelCanvas tr").remove();
        for (i = 0; i < y; i++) {
            $("#pixelCanvas").append("<tr class='vertical'></tr>");
        }
        for (j = 0; j < x; j++) {
            $(".vertical").append("<td class='cell' ></td>");
        }
        $("#pixelCanvas tr td").css("background-color", "red");
    });

    $("#pixelCanvas tr td").click(function() {
        $(this).css("background-color", "blue");
    });
});
javascript jquery javascript-events
2个回答
2
投票

我认为问题在于,当您将click事件绑定到表格单元格时,尚未创建这些单元格。尝试将click事件绑定到正文并使用"#pixelCanvas tr td"选择器来过滤事件使用者:而不是$("#pixelCanvas tr td").click编写以下内容:

$("body").on("click", "#pixelCanvas tr td", function() {
    $(this).css("background-color", "blue");
});

0
投票

问题是在完成“input [type =”submit“]'的点击之前,尚未创建元素。将单元格单击的绑定移动到'input [type =“submit”]'的单击处理程序中:

$("document").ready(function() {
    var y, x, cellColor;
    //console.log("tata");

    $("#sizePicker").submit(function(event) {
        event.preventDefault();
    });

    $('input[type="submit"]').click(function makeGrid(y, x) {
        y = Number($("#inputHeight").val());
        x = Number($("#inputWeight").val());
        $("#pixelCanvas tr").remove();
        for (i = 0; i < y; i++) {
            $("#pixelCanvas").append("<tr class='vertical'></tr>");
        }
        for (j = 0; j < x; j++) {
            $(".vertical").append("<td class='cell' ></td>");
        }
        $("#pixelCanvas tr td").css("background-color", "red");

        $("#pixelCanvas tr td").click(function() {
           $(this).css("background-color", "blue");
        });
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.