Я думаю, что ответ Дрю Уиллса на высоте, и это также может помочь. Div - это объект JavaScript, что означает, что вы можете добавить к нему свойства. Таким образом, вы можете уменьшить количество строк кода JavaScript и увеличить выразительность кода, прикрепив ваш «информационный объект» прямо к каждому элементу div, что означает, что вам больше не нужен ваш массив.
Откуда ваш массив? Я собираюсь предположить, что это JSON-версия некоторых данных, которые вы имеете на сервере. Итак, я предполагаю (предполагаю), что у вас есть какой-то цикл «каждый» или for, который создает элементы div из массива, возможно, так:
for (var i = 0; i < styles.length; i++)
{
var newDiv = $("<div>" + style[i].item + "</div>";
$("#container").append(newDiv);
}
Предполагая, что у вас это есть, вы можете изменить его следующим образом:
for (var i = 0; i < styles.length; i++)
{
var newDiv = $("<div>" + style[i].item + "</div>";
// KEY NEW LINE FOLLOWS:
newDiv.myCustomObject = styles[i];
$("#container").append(newDiv);
}
Теперь, когда div'ы сортируются повсюду, этот "myCustomObject" идет вместе с ними. Вам больше не нужен массив. Если вам нужно обновить свойство «Position» в «myCustomObject», используйте свойство «index» div, как сказал Дрю Уиллс.
Итак, представьте, что у вашего объекта "styles" есть свойство, называемое "Color". Представьте, что вы хотите, чтобы при нажатии отображалось предупреждение, сообщающее цвет, связанный с элементом, на котором они нажали. Теперь вы можете сделать это без использования массива "styles", потому что у div теперь есть все, что вам нужно. Чтобы вы могли сделать это:
$("#container div").click(function() {
alert("The color is " + this.myCustomObject.Color);
});
Позже, когда придет время опубликовать или отправить через ajax позиции, вы можете сделать это:
$("#container div").each(function(index) {
this.myCustomObject.Position = index;
}
ПРИМЕЧАНИЕ. Кроме того, некоторые люди предпочитают использовать метод data () JQuery, чтобы связать myCustomObject с div. Он достигает того же результата и, возможно, более полно собирает мусор в некоторых браузерах.