【发布时间】:2013-03-23 00:34:21
【问题描述】:
我有一些 100x100px 的 div:
三个区块的HTML代码:
<div id="plane">
<div class="tile tile3" block-id="1" style-id="3" style="left:50px; top:50px"></div>
<div class="tile tile1" block-id="2" style-id="1" style="left:150px; top:50px"></div>
<div class="tile tile3" block-id="3" style-id="3" style="left:250px; top:50px"></div>
</div>
当我单击一个 div 时,我添加了一个名为 ss 的类,它使单击的 div/block 变为黄色。我使用以下代码进行此操作:
el.innerHTML = html.join('');
$(el).find('.tile').click(function () {
var clickedBlock = $(this);
clickedBlock.addClass('ss');
});
问题是我只想将ss 类添加到我单击的块(div)中,并且至少有一侧(左侧或右侧)空闲。这样就不会附加其他块。在截图的情况下,绿色块的一侧是清晰的,所以点击这些应该可以得到ss类。红色的没有免费的一面,所以我点击它时不应该添加任何类。
我在互联网上搜索了解决方案并阅读了一些关于 offset 和 typeof 的内容,并认为我可以使用它。简而言之:单击一个块,获取它的 style left 和 top 并检查周围是否有任何 div 具有相同的 style left -100(左侧)和 +100 右侧的 top = 0。如果有,返回真。如果一侧为真或双方返回假(在这种情况下左右没有块),则该块是“空闲”的,需要在点击的块上添加ss类。
我试过这段代码(没有成功):
el.innerHTML = html.join('');
$(el).find('.tile').click(function () {
var clickedBlock = $(this);
var offset = $(this).offset(); //get the top and left px
if (typeof clickedBlock[offset.left-100][offset.top=clickedBlock.attr('top')] == 'true') { //check the left side
if (typeof clickedBlock[offset.left+100][offset.top=clickedBlock.attr('top')] == 'false') { //check the right side
clickedBlock.addClass('ss');
}
} else { //if left side is already false, it really doesn't matter if the right side is clear or not since 1 side needs to be clear
clickedBlock.addClass('ss');
}
});
我的问题:如何使这项工作?这是做到这一点的最佳方法,还是有更好的方法?如果有,是哪些?
以下选项也是可能的:
这个的HTML代码是:
<div id="plane">
<div class="tile tile3" block-id="1" style-id="3" style="left:50px; top:50px"></div>
<div class="tile tile1" block-id="2" style-id="1" style="left:150px; top:100px"></div>
<div class="tile tile2" block-id="3" style-id="2" style="left:50px; top:150px"></div>
<div class="tile tile3" block-id="4" style-id="3" style="left:250px; top:150px"></div>
</div>
这里的绿色和蓝色块是“免费的”。所以在这种情况下,我们需要修改代码以检查具有left-100 和top-50、left-100 和top+50、left+100 和top-50、left+100 和top+50 的div。所以总共 6 次检查(左侧 3 次,右侧 3 次)
总之:如果(点击时)一侧是空闲的(或两者都空闲),则添加 ss 类。我希望我的问题很清楚,有人可以提供帮助。
亲切的问候
【问题讨论】:
标签: javascript jquery onclick offset typeof