Через этот вопрос я узнал здесь, что есть и отрицательные стороны в расширении объектов DOM. Можно ли сделать что-то вроде следующего?
var tr = $('<tr>');
tr.myCustomProperty = 'Some string value';
Я знаю, что в jQuery существует метод .data()
, но с ним лучше работать. Я также задаюсь вопросом, содержит ли моя переменная tr
фактический элемент DOM DOM или любой другой объект.
jQuery обрабатывает объекты DOM в специальном массиве с именем jQuery. Вы можете думать об этом как о массиве элементов DOM, который расширен, чтобы иметь все методы jQuery.
Вы можете получить доступ к элементу DOM в вашем примере следующим образом:
tr[0]
но все причины не хранить данные таким образом все еще применяются.
Как упоминал @Kevin B, нехорошо делать то, что вы пытаетесь сделать (расширение объекта jQuery), потому что вы потеряете пользовательские свойства при каждой повторной инициализации.
Кевин неверен. Вы можете хранить что-то в TR в большинстве браузеров, выполняя следующие действия:
var tr = $('tr').eq(0); // get a single TR from the DOM
var actualElement = tr[0]; // get the actual element object from the jQuery object
actualElement.myCustomProperty = 'Some string value';