Не лучшая идея хранить эти пары ключ / значение на этом уровне на объекте / узле.
var data = $( '#div_id').data();
возвращает все данные, которые присоединены к этому node
, включая event handlers
например, есть любые.
Так что лучшее решение - создать объект, содержащий все ваши данные:
$('#div_id').data('mydata', {});
/* ... */
$('#div_id').data('mydata')[key] = value;
К вашему актуальному вопросу.Простые объекты Javascript не имеют свойства .length
.Вы должны проверить это сами, циклически перебирая ключи:
var mylen = 0;
for(var prop in $('#div_id').data('mydata')) {
mylen++;
}
Это должно быть улучшено, также проверяя и вызывая метод .hasOwnProperty()
, который гарантирует, что текущее свойство не наследуется где-либоПрототип цепи.