当点击TD元素时,为2个单元格的宽度和3个单元格的高度上色
Color 2 cells width and 3 cells height when clinking on a TD element
我正在寻找一种方法来制作网格(目前使用表,但很快在div)。假设我点击第一个单元格(x,y = 1,-1),我想让背景颜色改变2个单元格的宽度和3个单元格的高度。(共改变6个细胞)…
如果使用div更容易,那就继续…请使用jQuery !:)
我真的不知道如何做到这一点,如果有人能把我的路径或给我一个代码应该做到这一点…或者更好的是,一个教程XD…
我真的很感激你的帮助,万分感谢
编辑:我在这里要做的实际上是一个不可见的网格,使系统可以与rts类游戏相媲美,其中建筑是透明的,跟随鼠标,但当你移动时它附着在网格上,点击建筑物就会掉落(不透明)……解释一下,这样你就有视觉效果了
div(因为它是长期目标):
首先,我做了一个小标记,就像一个表格。
html是:
<div id="overall">
<div class="row">
<div class="cell col0"></div><div class="cell col1"></div><div class="cell col2"></div><div class="cell col3"></div>
</div>
<div class="row">
<div class="cell col0"></div><div class="cell col1"></div><div class="cell col2"></div><div class="cell col3"></div>
</div>
<div class="row">
<div class="cell col0"></div><div class="cell col1"></div><div class="cell col2"></div><div class="cell col3"></div>
</div>
<div class="row">
<div class="cell col0"></div><div class="cell col1"></div><div class="cell col2"></div><div class="cell col3"></div>
</div>
</div>
使用以下css:
.row{
height:25px;
}
.cell{
width:25px;
height:100%;
display:inline-block;
border:1px solid black;
}
它有一个类似表格的显示(它是一堆由单元格组成的行,同一列中的单元格共享一个类)。
要做你想做的,看起来你需要将一个点击函数关联到每个.cell
。
这样做很容易,使用$(".cell").click(function(){});
现在,是完成函数的时候了。
现在,下一步是为需要上色的单元格上色。为了添加颜色,我们将使用一个特殊的类(这样我们可以轻松地更改更多内容):
.clickedCell{
background:red;
}
最难的部分是选择6个单元格。可以使用多种方法(例如,我们可以有一个像A1, A2, B1, B2这样的id网格,并使用id选择它们),效率/设计在很大程度上取决于你将为你的div设置的标记。
我的做法如下:
检索单元格列的类:
var cl=$(this).attr("class"); var col="."+/col'd/.exec(cl)[0];
检索当前div的父元素
var parent=$(this).parent();
创建一个包含当前栏中3个单元格的jQuery对象:
listOfCell=$(this); listOfCell=listOfCell.add(parent.next().children(col)); listOfCell=listOfCell.add(parent.prev().children(col));
注意add函数返回一个新的集合,因此我们需要赋值返回值
为该对象添加下3个单元格
listOfCell=listOfCell.add(listOfCell.next());
- 添加类
listOfCell.addClass("clickedCell");
一切都结束了:)
这里有一个工作示例:http://jsfiddle.net/KZFzd/1/
注意:
- 如前所述,该功能在很大程度上取决于所使用的标记。
- 示例不处理先前选择的单元格的删除。这很容易,留给读者作为练习。
- 它不处理侧边单元格的特殊情况,它只是改变单元格的背景,如果网格更大则会改变。这种情况留给读者作为练习。
- 它不检查下一个/上一个父对象的存在,因为jQuery返回一个空的jQuery对象当没有匹配,因此,方法可以调用它,即使它没有效果。
- 这个例子可以通过多种方式进行压缩,但是为了可读性的考虑,我们还是保持原样。
希望对你有帮助。
编辑:为了回答您的评论,新提琴处理指定大小:http://jsfiddle.net/KZFzd/3/
我添加了两个输入,让您指定大小。您可能需要在您的代码中更改:)
。
我还添加了类移除来清理显示。
所以两个主要的变化是,现在,我们使用两个for
循环来添加单元格。点击的单元格位于矩形的左上角。
第一个:
for (i=1;i<y;i++){ listOfCell=listOfCell.add(par.children(col)); par=par.next(); }
它只是从一个父元素迭代到另一个父元素以达到所需的高度。(并且第一个父赋值现在直接是下一个。
par=$(this).parent().next()
第二个:
for (i=1;i<x;i++){ listOfCell=listOfCell.add(listOfCell.next()); }
它只是迭代添加下一个元素以达到所需的宽度。
注意:
- 我们使用的事实是,没有双在jQuery列表的宽度。
- 我们从1开始迭代,而不是0,因为我们的起始
listOfCell
已经是1*1单元格 - 你可以很容易地从其他角落开始,如果你改变使用
next()
到prev()
在一个循环或/和其他。 - 仍然不处理侧例。
- 单元格的工具提示或标题不显示超过2000个字符
- 使用jQuery只返回选中复选框后的第一个表单元格值
- 使用Office.js在Excel中将20000多个单元格写入表失败
- 将电子邮件正文导出到Google Sheets中的多个单元格中
- 如何使用 JavaScript 从单元格中选择第二个输入框
- 如果选择了..单选按钮,则如何从多行中发送特定行的多个单元格数据
- 如何循环遍历表行,更改类,并使用"n〃;行数,并知道每行中第一个单元格的值
- 谷歌电子表格在多个单元格中显示脚本中的值
- 获取HTML表中单击的列中第一个单元格和单击的行中第一个单元的内容
- 使用外部 javascript 更改多个表格单元格中的文本
- 返回两个日期时间单元格之间的差值
- 如果找到第3行,则删除next和next tr的第3个单元格
- Angularjs:想要在其各自的“工作日”单元格上开始“第一个约会”
- 使用 javascript 创建表,同时保留第一个单元格行
- 如何循环访问其第三个单元格具有 rowspan 属性的每一行
- 找到行跨度,然后检查第一个单元格是否有文本
- Google表格脚本,用于将一张工作表上的几个单元格值传递给新的工作表行
- jQuery选择当前TR的第二个和第三个单元格
- SlickGrid:单元格中具有两个日期字段的复合编辑器
- 限制在多个表格上选择单元格