Описание проблемы:
Когда вы регистрируете слушателей для события hover на каждом td , функция сохраняет ссылку на автомобиль переменная.После завершения цикла эта переменная будет содержать последнее значение массива, поэтому при запуске триггеров события hover они будут использовать это последнее значение.
Одно решение:
Одним из решений является сохранение idx массива в элементах td как дополнительного атрибута, тогда вы можете сделать, как в следующем примере:
var cars = ["Saab", "Volvo", "BMW"];
$(document).ready(function()
{
for (i = 0; i < cars.length; i++)
{
$( "#id" + i ).hover(function()
{
var car = cars[Number($(this).attr("cars-idx"))];
$(this).append($("<span> make is " + car + "</span>"));
},
function()
{
$(this).find("span:last").remove();
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<table width="250px" border="1" cellspacing="10" cellpadding="3">
<tr>
<td id="id0" cars-idx="0">car 1</td>
</tr>
<tr>
<td id="id1" cars-idx="1">car 2</td>
</tr>
<tr>
<td id="id2" cars-idx="2">car 3</td>
</tr>
</table>