Javascript jQuery-标识已单击的td
我根据用户偏好在HTML文档中创建了一个网格Javascript jQuery-标识已单击的td,javascript,jquery,arrays,dom,click,Javascript,Jquery,Arrays,Dom,Click,我根据用户偏好在HTML文档中创建了一个网格(表) 将行和单元格追加到表后,jQuery似乎无法正确访问它们?就好像它不把它们看作是 DOM的一部分。 基本上,我将处理多维数组中的所有数据,例如: 它当前设置了名为#row_0、#row_1等的附加行,并且添加了td,但没有ID 我需要能够将单击的TD映射到我的jQuery,以便对其执行一些功能和逻辑 当用户点击td时,是否有任何方式响应my JS,比如: tr=[1] td=[2] 此处找到的当前代码: 当添加td元素点击处理程序时,这些目标
(表)
将行
和单元格
追加到表后,jQuery似乎无法正确访问它们?就好像它不把它们看作是<代码> DOM<代码>的一部分。
基本上,我将处理多维数组中的所有数据,例如:
它当前设置了名为#row_0、#row_1等的附加行
,并且添加了td
,但没有ID
我需要能够将单击的TD
映射到我的jQuery,以便对其执行一些功能和逻辑
当用户点击td
时,是否有任何方式响应my JS,比如:
tr=[1]
td=[2]
此处找到的当前代码:
当添加td
元素点击处理程序时,这些目标元素尚未创建,因此使用点击处理程序并将其绑定到#board
元素,目标元素选择器为td
,如下所示。然后使用查找行和td的位置(将1添加到索引中,因为它基于0)
演示:
另外,您的创建代码也有缺陷,jqueryappend不像字符串连接那样工作
$('#board tr').remove();
var size = parseInt($("#size").val());
for (var i = 0; i < size; i++) {
var $tr = $('<tr />', {
id: 'row_' + i
}).data('index', i + 1);
$("#board").append("<tr id='row_" + i + "'>");
for (var j = 0; j < size; j++) {
$('<td />', {
id: 'col_' + j
}).data('index', j + 1).appendTo($tr);
}
$("#board").append($tr);
}
$('#board tr').remove();
var size=parseInt($(“#size”).val();
对于(变量i=0;i
演示:
这是使用您当前的代码
注意,我使用了.on-这是一个使用jquery的“实时”事件
我还修改了您对每个td的命名,将其改为col_1_2,其中1为col,2为row
$("#row_"+i).append("<td id='col_"+j+"_"+i+"'> </td>");
$(“#行"+i)。追加(“”);
这里是现场示例朋友:
这是因为在页面上插入新的动态元素时,ready jquery无法找到它。默认情况下,ready仅在加载时对现有元素运行事件。虽然有些函数(如.on)可以解决此问题。这里是解决方案,请记住您应该绑定eventclick在创建元素时,您不应该使用通用$('td')。click event不起作用,因为有些元素尚未添加到DOM中
$("#go").click(function(){
var size = $("#size").val();
if(size<3 || size>10){
alert("That is not a valid input. Please select 3-10");
return;
}
$('#board tr').remove();
// Check this bellow
var size = parseInt($("#size").val()),
tr = $("<tr/>"), td = $("<td/>"), tdc;
for(var i=0;i < size;i++){
for(var j=0;j<size;j++){
tdc = td.clone();
tdc.attr('id', 'col_'+j);
tr.append(tdc);
tdc.click(function(){
alert(this);
});
}
tr.attr('id','row_'+i);
$("#board").append(tr);
}
});
$(“#go”)。单击(函数(){
变量大小=$(“#大小”).val();
如果(尺寸10){
警报(“该输入无效,请选择3-10”);
返回;
}
$('#board tr')。删除();
//检查这个喇叭
var size=parseInt($(“#size”).val()),
贸易发展局;;
对于(var i=0;i 对于(var j=0;jUnrelated(可能)注意…为什么它会在我的表中显示一个闪烁的光标…?就逻辑而言,我有Javascript,但学习操作DOM仍然有点不稳定。感谢您的帮助:-)看到改进的做事方式和方法是非常有帮助的。很高兴我能提供帮助-如果你喜欢我的答案,你可以随时投票(或者如果它符合你的目的,你可以接受!)耶!祝贺兄弟!
$("#row_"+i).append("<td id='col_"+j+"_"+i+"'> </td>");
$("#board").on('click', 'td', function(){
$("#board td").css("background","white");
$(this).css("background","red");
});
$("#go").click(function(){
var size = $("#size").val();
if(size<3 || size>10){
alert("That is not a valid input. Please select 3-10");
return;
}
$('#board tr').remove();
// Check this bellow
var size = parseInt($("#size").val()),
tr = $("<tr/>"), td = $("<td/>"), tdc;
for(var i=0;i < size;i++){
for(var j=0;j<size;j++){
tdc = td.clone();
tdc.attr('id', 'col_'+j);
tr.append(tdc);
tdc.click(function(){
alert(this);
});
}
tr.attr('id','row_'+i);
$("#board").append(tr);
}
});