Reputation: 15
Im trying to find the current cell that the user has clicked on. For example if the user clicked on the first cell, I want to return 1. If they clicked on the tenth cell I want to return 10. There are 16 total cells in the table.
<html>
<head>
<title>Lights Out!</title>
<script type="text/javascript" src="jquery-1.4.js"></script>
<script type= "text/javascript">
//The d
var gameBoard = new Array(getTdCount())
for(var i =0; i < getTdCount(); i++)
{
gameBoard[i] = 0;
}
function getTdCount()
{
return $("td").length;
}
$(document).ready(function()
{
$("#board tr td").hover(function()
{
$(this).css('border-color', '00FF33');
},
function()
{
$(this).css('border-color', 'black')
})
var $offProtoType = $('#offprototype').css('display', 'block').removeAttr('id')
$('td').append($offProtoType)
$("#board tr td").click(function()
{
$("img", this).attr('src', 'on.png')
})
});
</script>
<style type="text/css">
td
{
border-style:solid;
border-color:black;
background-color:black;
float:left;
}
</style>
</head>
<body>
<img style = "display:none" id="offprototype" src ="off.png">
<img style = "display:none" id="onprototype" src ="on.png">
<table id="board" border="3" bgcolor="black" align="center">
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<input type="button" value="Shuffle" onclick="change()"/>
</body>
</html>
Upvotes: 1
Views: 3040
Reputation: 3023
The cellIndex property can be used.
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-82915075
Be aware: There is a bug in Safari 2 and Konqueror where cellIndex is always 0. In that case, a feature test and a fallback can be used.
Upvotes: 0
Reputation: 66201
Use index
:
var $tds = $('#board tr td');
$tds.click(function(){
// Gets the 0 based index, and add 1:
var num = $tds.index(this) + 1;
$("img", this).attr('src', 'on.png')
});
We first cache the results for the #board tr td
search, so we don't have to look it up on each click.
Next, we get use the index
function to find the index of the current td
out of the full result of td
elements.
Last, we add 1 since index
returns a 0
based count.
Update: jQuery 1.4
This is not an instance were we can use the new index()
feature of jQuery 1.4. index()
without parameters, gets the index of the element from the context of its siblings. In this case, we need it in the context of all the td
elements in the table, not just its siblings.
If no argument is passed to the .index() method, the return value is an integer indicating the position of the first element within the jQuery object relative to its sibling elements.
Upvotes: 3
Reputation: 887837
Like this:
var cells = $('#board td')
cells.click(function() { alert(cells.index(this) + 1); });
Upvotes: 0