Вход Регистрация
Файл: framework/thirdparty/jquery-entwine/src/jquery.entwine.properties.js
Строк: 142
<?php
(function($) {    

    var 
entwine_prepend = '__entwine!';
    
    var 
getEntwineData = function(el, namespace, property) {
        return 
el.data(entwine_prepend + namespace + '!' + property);
    };
    
    var 
setEntwineData = function(el, namespace, property, value) {
        return 
el.data(entwine_prepend + namespace + '!' + property, value);
    };
    
    var 
getEntwineDataAsHash = function(el, namespace) {
        var 
hash = {};
        var 
id = jQuery.data(el[0]);
        
        var 
matchstr = entwine_prepend + namespace + '!';
        var 
matchlen = matchstr.length;
        
        var 
cache = jQuery.cache[id];
        for (var 
k in cache) {
            if (
k.substr(0,matchlen) == matchstr) hash[k.substr(matchlen)] = cache[k];
        }
        
        return 
hash;
    };
    
    var 
setEntwineDataFromHash = function(el, namespace, hash) {
        for (var 
k in hash) setEntwineData(namespace, k, hash[k]);
    };

    var 
entwineData = function(el, namespace, args) {
        switch (
args.length) {
            case 
0:
                return 
getEntwineDataAsHash(el, namespace);
            case 
1:
                if (
typeof args[0] == 'string') return getEntwineData(el, namespace, args[0]);
                else                            return 
setEntwineDataFromHash(el, namespace, args[0]);
            default:
                return 
setEntwineData(el, namespace, args[0], args[1]);
        }
    };
 
    $.
extend($.fn, {
        
entwineData: function() {
            return 
entwineData(this, '__base', arguments);
        }
    });
    
    $.
entwine.Namespace.addHandler({
        
order: 60,
        
        
bind: function(selector, k, v) {
            if (
k.charAt(0) != k.charAt(0).toUpperCase()) $.entwine.warn('Entwine property '+k+' does not start with a capital letter', $.entwine.WARN_LEVEL_BESTPRACTISE);

            
// Create the getters and setters

            
var getterName = 'get'+k;
            var 
setterName = 'set'+k;

            
this.bind_proxy(selector, getterName, function() { var r = this.entwineData(k); return r === undefined ? v : r; });
            
this.bind_proxy(selector, setterName, function(v){ return this.entwineData(k, v); });
            
            
// Get the get and set proxies we just created
            
            
var getter = this.injectee[getterName];
            var 
setter = this.injectee[setterName];
            
            
// And bind in the jQuery-style accessor
            
            
this.bind_proxy(selector, k, function(v){ return (arguments.length == 1 ? setter : getter).call(this, v) ; });

            return 
true;
        },
        
        
namespaceMethodOverrides: function(namespace){
            return {
                
entwineData: function() {
                    return 
entwineData(this, namespace.name, arguments);
                }
            };
        }
    });
    
})(
jQuery);
?>
Онлайн: 3
Реклама