2017-07-07 73 views
0

程序当前在开发工具中运行时没有错误。除了代码的最后部分外,所有内容都正在执行在提示中输入输入后,容器清除,但不会让我用新设置的变量在内部绘制它?重新启动我的电网回路时出现问题

var row=16; 
var sizeofsquare=45; 

function gridLife() { 
    for (var x = 0; x < row; x++){ 
    for (var y = 0; y < row; y++){ 
    $("<div class='square'></div>").appendTo(".container"); 
} 
} 
} 

$(document).ready(function(){ 
    gridLife(); 
$('.square').on('mouseenter', function() { 
     $(this).css('background-color', 'black'); 
     }); 
}); 

$(document).ready(function(){ 
$('.buttons').click(function(){ 
    $('.container').empty(); 
    row = prompt ('How many sqaures would you like?'); 
    sizeofsquare = 720/row; 
}); 
}); 
+0

您可能需要将焦点放回要绘制的元素上。 – Difster

回答

0

问题是,您正在通过调用$('.container').empty()删除所有方块,但是之后没有放回。在按钮点击处理程序结束时,应该再次调用gridLife()来重新生成网格元素。

但是,它仍然不起作用,因为只有原始方形元素绑定了mouseenter事件。新广场不再有这个事件处理程序。你可能通过再次打电话$('.square').on解决这个问题,但这很混乱。最好的办法是使用可选的选择参数.on(),像这样:

$('.container').on('mouseenter', '.square', function() { 
    $(this).css('background-color', 'black'); 
}); 

现在,所有.square元素曾经.container元素中存在会自动触发同样的事件。

+0

你是男人。谢谢你的解释。 –