使用 appendTo 进行 div 更改 parents
Using appendTo to make a div change parents
所以我决定学习使用 JS 和 jQuery 编程的最佳方式是尝试构建我喜欢的东西。所以我决定使用最少的 HTML 和主要的 JS 和 Jquery.
制作我自己的棋盘
下面的代码渲染一个板并在图块的起始位置插入图像。
$(document).ready(function(){
//draw the chess board
var amount = 0;
var columnColor = "Black";
while(amount < 64){
if(amount % 9 === 0){
amount++
}
else if (amount < 18){
$(".mainWrapper").append('<div class="block'+columnColor+'"><img class="pawn" src="images/whitePawn.png" alt="White Pawn" height="42" width="42"></div>')
amount++
}
else if (amount > 45){
$(".mainWrapper").append('<div class="block'+columnColor+'"><img class="pawn" src="images/blackPawn.png" alt="White Pawn" height="42" width="42"></div>')
amount++
}
else{
$(".mainWrapper").append('<div class="block'+columnColor+'"></div>')
amount++
}
switch (columnColor){
case "White":
columnColor = "Black";
break;
case "Black":
columnColor = "White";
break;
}
};
});
console.log("I ran! :D");
我的下一步是让棋子能够移动。起初我想我会通过使用 jQuery 他的 .draggable
方法来做到这一点。哪个有效(有点)但没有做我想要的,因为它不会以干净的方式移动它们(碎片可以重叠正方形)并且它不限制用户可以移动的正方形数量。
所以稍后 google 快速搜索,我在 Whosebug 上找到了 THIS post。他们在那里描述了一种使用 appendTo
将项目移动到另一个 parent div 的方法。这对我的情况来说是完美的(至少我认为)。
虽然我对 JS 的理解仍然有限,但我无法全神贯注于如何做到这一点。
我知道您需要某种选择器 class 来选择图像。然后需要有一个 click
事件将所选图像移动到您单击的 div。
仅供娱乐,我无法超越THIS。
感谢任何帮助或提示!
您可以将一个字段上的 mousedown
与相邻字段上的 mouseup
组合起来:
var piece;
$('div').mousedown(function(e) {
e.preventDefault();
piece = $(this).find('img');
})
.mouseup(function() {
$(this).append(piece); // same as piece.appendTo(this);
});
当然,距离没有限制,它对整个领域都不起作用(如果有图像的话)。
我添加了一个 preventDefault()
,因此没有选择使拖动变得复杂的元素。
为了包含这些片段,您可能必须使用字段的坐标才能直接使用。您可能想为此查看 e.clientX
和 getBoundingClientRect
。
所以我决定学习使用 JS 和 jQuery 编程的最佳方式是尝试构建我喜欢的东西。所以我决定使用最少的 HTML 和主要的 JS 和 Jquery.
制作我自己的棋盘下面的代码渲染一个板并在图块的起始位置插入图像。
$(document).ready(function(){
//draw the chess board
var amount = 0;
var columnColor = "Black";
while(amount < 64){
if(amount % 9 === 0){
amount++
}
else if (amount < 18){
$(".mainWrapper").append('<div class="block'+columnColor+'"><img class="pawn" src="images/whitePawn.png" alt="White Pawn" height="42" width="42"></div>')
amount++
}
else if (amount > 45){
$(".mainWrapper").append('<div class="block'+columnColor+'"><img class="pawn" src="images/blackPawn.png" alt="White Pawn" height="42" width="42"></div>')
amount++
}
else{
$(".mainWrapper").append('<div class="block'+columnColor+'"></div>')
amount++
}
switch (columnColor){
case "White":
columnColor = "Black";
break;
case "Black":
columnColor = "White";
break;
}
};
});
console.log("I ran! :D");
我的下一步是让棋子能够移动。起初我想我会通过使用 jQuery 他的 .draggable
方法来做到这一点。哪个有效(有点)但没有做我想要的,因为它不会以干净的方式移动它们(碎片可以重叠正方形)并且它不限制用户可以移动的正方形数量。
所以稍后 google 快速搜索,我在 Whosebug 上找到了 THIS post。他们在那里描述了一种使用 appendTo
将项目移动到另一个 parent div 的方法。这对我的情况来说是完美的(至少我认为)。
虽然我对 JS 的理解仍然有限,但我无法全神贯注于如何做到这一点。
我知道您需要某种选择器 class 来选择图像。然后需要有一个 click
事件将所选图像移动到您单击的 div。
仅供娱乐,我无法超越THIS。
感谢任何帮助或提示!
您可以将一个字段上的 mousedown
与相邻字段上的 mouseup
组合起来:
var piece;
$('div').mousedown(function(e) {
e.preventDefault();
piece = $(this).find('img');
})
.mouseup(function() {
$(this).append(piece); // same as piece.appendTo(this);
});
当然,距离没有限制,它对整个领域都不起作用(如果有图像的话)。
我添加了一个 preventDefault()
,因此没有选择使拖动变得复杂的元素。
为了包含这些片段,您可能必须使用字段的坐标才能直接使用。您可能想为此查看 e.clientX
和 getBoundingClientRect
。