3x3のHTMLテーブルがあり、各要素に個別の<canvas>
要素が格納されています。テーブルに次の代わりに
1つ
のセルがあります。画像を含むセルがクリックされ、その右側のセルにテキストが含まれている場合、そのセルのキャンバスを交換しようとしています。隣接するセルにテキストが保存されます。
次のコードを使用すると、セルをクリックするたびに、canvas要素が消えてテキストが入れ替わるだけで、右側のセルにテキストが含まれなくなるか、
を使用してキャンバスにアクセスしようとしましたが、機能しません。値の交換のためにこのコンテンツにアクセスしますか?
このために簡略化されたjsFiddleを作成しました:http://jsfiddle.net/bobbyrne01/dbMnM/1/text
<canvas>
<canvas>
("#blankCell").html()
$(function () {
var $tbl = $('<table border="1">').attr('id', 'grid');
var $tbody = $('<tbody>').attr('id', 'tableBody');
var tileCount = 0;
var rowCount = $("#numOfPieces").val();
for (var i = 0; i < rowCount; i++) {
var trow = $("<tr>").attr('id', 'row' + i); // New row
for (var j = 0; j < rowCount; j++) {
$cell.append(canvasArray[tileCount]); // Each data cell contains separate canvas element
$cell.appendTo(trow);
tileCount++;
}
trow.appendTo($tbody);
}
$tbl.append($tbody);
$('table').remove(); // removes previous table if it existed
$('body').append($tbl);
});
$('#grid tr:nth-child(2) td:last').prev().text("empty");
$('#grid tr:nth-child(2) td:last').prev().attr('id', 'blankCell');
クリックをリッスンします。
$('body').on('click', '#grid td', function(e) {
var $this = $(this);
if ($(this).closest('td').next("#blankCell").length){
blank = $(this).closest('td').next("#blankCell");
if (blank.length) {
//alert('blank to the right');
$this.before(blank);
}
$(this).attr('id', 'blankCell');
$(this).closest('td').next("#blankCell").attr('id', 'piece');
}
助けに感謝します!
スワップにキャンバス要素を使用する代わりに、テキストのみが含まれるようになりました。
目標は、ユーザーが横にあるセルを選択した場合、blankCell
そのセルをと交換したいblankCell
場合、ユーザーが横にないセルを選択した場合、blankCell
何も起こらないようにすることです。
今のところ、左右の検出のみに関心があります。