Я пытаюсь создать проект tictactoe в jQuery, и у меня возникла серьезная проблема...
Плитки находятся в Если мы теперь посмотрим на «помеченную» функцию, то Однако он ничего не делал, поэтому я проверил консоль и, по-видимому, Можно ли как-нибудь отправить правильный вид Спасибо! Ваш код не соответствует правильным принципам. Вам нужно передать и изменить свою функцию следующим образом: теги, и я пытаюсь сделать так, чтобы когда пользователь щелкает плитку, он вызывал «отмеченную» функцию.
$(this)
должен быть узлом , из которого функция была вызвана.
$(this)
содержал объект DOM Window. $(this)
в "отмеченную" функцию?<script type="text/javascript">
var TURN_X = false;
var TURN_O = true;
var turn = false; // this is to see whos turn it is.
$(document).ready(function(){
var listCells = $.makeArray($("td"));
$("td").click(function(){marked(listCells)}); //THIS IS WHERE I HAVE PROBLEMS
return false;
});
function marked(arr)
{
console.log($(this)); // THIS CONSOLE LOG RETURNS "DOM Window"
$(this).addClass("marked");
if(turn == TURN_X)
{
this.innerHTML = "X";
turn = false;
}
else
this.innerHTML = "O";
var tileNum = $(this).attr("id");
}
3 ответа
$(function(){
var TURN_X = "X",
TURN_O = "O",
turn = TURN_O,
$listCells = $("td");
function marked() { // define event handler
var $this = $(this),
tileNum = $this.attr("id");
if ( !($this.hasClass("marked") ) {
$this.addClass("marked").text(turn);
turn = (turn == TURN_X) ? TURN_O : TURN_X;
}
}
$listCells.click(marked); // attach event handler
});
this
за вас. this
всегда будет тем, что вы ожидаете, если будете передавать функции обратного вызова напрямую, а не вызывать их самостоятельно. $(this)
вашей функции: $("td").click(function(){ marked(listCells, $(this))} );
function marked(arr, that)
{
that.addClass("marked");
if(turn == TURN_X)
{
that.innerHTML = "X";
turn = false;
}
else
that.innerHTML = "O";
var tileNum = that.attr("id");
}
$(document).ready(function(){
var TURN_X = false,
TURN_O = true,
turn = false,
listCells = $.makeArray($("td"));
$("td").click(function() {
marked(listCells, this)
});
function marked(arr, self) {
$(self).addClass("marked");
if(turn == TURN_X) {
self.innerHTML = "X";
turn = false;
}else{
self.innerHTML = "O";
var tileNum = self.id;
}
}
});
Похожие вопросы: