Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   ООП. Элементы массива в качестве экземпляра класса (https://javascript.ru/forum/jquery/21595-oop-ehlementy-massiva-v-kachestve-ehkzemplyara-klassa.html)

DonLino 16.09.2011 17:30

ООП. Элементы массива в качестве экземпляра класса
 
Есть класс:
var class = function(i) {
     this.index = i;
     this.res = "Мой номер " + i;
     this.act = function(){
          alert(this.act);
     }
}

Нужно каждому элемента массива определить класс:
objects = $(".text");
    objects.each(function (index) {
        this = new objClass(index);
        this.move();
    }

Как правильно это сделать? (запись выше не верна)

nikita.mmf 16.09.2011 17:38

Какому массиву? обычны в jQuery для этих целей используют data
objects = $(".text");
    objects.each(function (index) {
        this.data("someClass",  new objClass(index)).data("someClass").move();
    }

melky 16.09.2011 17:40

вопрос неясен.... что такое "каждому элементу массива определить класс?"

DonLino 16.09.2011 17:53

Цитата:

Сообщение от nikita.mmf (Сообщение 126776)
Какому массиву? обычны в jQuery для этих целей используют data
objects = $(".text");
    objects.each(function (index) {
        this.data("someClass",  new objClass(index)).data("someClass").move();
    }

спасибо, вроде то что нужно..

DonLino 19.09.2011 22:37

Вобщем не совсем все получается как хотелось бы..
Есть 4 елемента:
<div id="elemToMove">
        <div class="toMove"></div>
        <div class="toMove"></div>
        <div class="toMove"></div>
        <div class="toMove"></div>
</div>

Нужно для каждого хранить по 2 свойства, допустим х и у, что бы потом использовать в анимации. Делаю так (упрощенный код):
var objClass = function (x, y) {
     px = x;
     py = y;
};
function moveObj (obj) {
          $(obj).animate({left: obj.px, top: obj.py}, 1000);
     };

objects = $(".toMove");
objects.each(function () {
        this = new objClass(x, y);
        alert(this.px +" "+ this.py);
        moveObj(this);
};

Вобщем где-то так, но не работает...
Пробую по-другому:
objects.each(function (index) {
        obj = objects[index];
        obj = new objClass(x, y);
        alert(obj.px +" "+ obj.py);
        moveObj(obj);
};

Свойства px и py есть, но с анимацией проблема, не находит метод animate у объекта obj.
Пробую иначе:
objects.each(function (index) {
        obj = objects[index];
        obj.prototype = objClass(x, y);
        alert(obj.px +" "+ obj.py);
        moveObj(obj);
};

Здесь с анимацией все хорошо, только отсутствуют свойства px и py.
Подскажите, как правильно сделать?


Часовой пояс GMT +3, время: 05:31.