Created
July 25, 2011 01:51
-
-
Save atomer/1103395 to your computer and use it in GitHub Desktop.
jQuery.widgetのoptionのような機構
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div id="hoge"> | |
<div class="foo"></div> | |
</div> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @param target Object|HTMLElement | |
* @param ns String | |
* @param defaultData Object | |
* @return Function | |
* @example | |
// ex1 | |
var obj = {}; | |
obj.data = dataPacker(obj); | |
obj.data("hoge", "value"); | |
// ex2 | |
var obj = {}; | |
var el = document.getElementById("foo"); | |
obj.elements = dataPacker(el); | |
obj.elements("fuga", ".fuga"); | |
*/ | |
function dataPacker(target, ns, defaultData) { | |
var nsList, data, self, packer; | |
if (!ns) { | |
ns = "_dataPacker"; | |
} | |
if (target.tagName) { | |
self = target; | |
target= {}; | |
} | |
nsList = ns.split("."); | |
data = target; | |
for (var i = 0, len = nsList.length; i < len; i++) { | |
data[nsList[i]] = data[nsList[i]] || {}; | |
data = data[nsList[i]]; | |
} | |
packer = function(name, value) { | |
var el; | |
switch (arguments.length) { | |
case 1: | |
return data[name]; | |
case 2: | |
if (!self) { | |
data[name] = value; | |
} else { | |
el = self.querySelectorAll(value); | |
if (el) { | |
data[name] = el.length > 0 ? el : el[0]; | |
} else { | |
data[name] = null; | |
} | |
} | |
return value; | |
default: | |
return data; | |
} | |
}; | |
if (defaultData) { | |
for (var name in defaultData) { | |
packer(name, defaultData[name]); | |
} | |
} | |
return packer; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: dataPacker.js | |
description: jQuery.widgetのoptionのような機構 | |
authors: | |
- atomer | |
resources: | |
normalize_css: no |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment