Показать сообщение отдельно
  #12 (permalink)  
Старый 27.06.2012, 23:59
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Devote - спасибо, перебор хоть и нужен не всегда,
но в том случае который я имел ввиду он и вправду нужен,
я забыл про него просто напросто.

melky
Это не утопия, это вроде бы как гипербола
в общем стилистическая фигура явного и намеренного преувеличения, имеющего целью усиление выразительности
Цитата:
я сделал через наследование 
жёстко завернул.
А не лучше ли уж тогда вместо propName, сразу обьект передавать ?
<script src="http://code.jquery.com/jquery-1.7.2.js"></script>
<p>TEST</p>
<script>
// тут вся магия (бывший метод createGetter)
jQuery.createPlugin=function (propName,obj) {

    // наследование проходится в курсе молого бойца.
    var F = function(){};
    F.prototype = obj;

    // делаем из объекта геттер.
    jQuery.fn[propName] = function() {
        // чтобы каждый раз не создавать, сохраним его.
        var fresh = this.data(propName+"_getter");

        // если не сохранён, создаём и сохраняем
        if (!fresh) {
            fresh = new F();
            this.data(propName+"_getter", fresh);
        }

        // сохраняем\изменяем контекст - в любой момент он может измениться - добавиться элементы и т.д.
        fresh._this = this;

        return fresh;
    };
}

// колдуем ... 
jQuery.createPlugin("colorchangers",{
    toRed: function() {
        // JQ-объект (контекст) хранится в свойстве _this
        // this - это объект, который щас описываем.
        return this._this.css("color", "red");
    },
    randomColors: ["green", "aqua", "lime"],
    toRandom: function(){
        // т.к. this равен объекту colorchangers, то может обратиться к его свойствам
        var randomColor =  this.randomColors[Math.floor(Math.random()*this.randomColors.length)];
        return this._this.css("color", randomColor);
    }
});

// тестим
var test = $("p");

test.colorchangers().toRed();
</script>
<div>TEST_2</div>
<script>
setTimeout(function() {
    // изменим объект JQ и ещё затестим
    test = test.add("div");
    test.colorchangers().toRandom();
}, 800);
</script>
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 28.06.2012 в 00:45.
Ответить с цитированием