valuechange-delegate.html revision 817fd44279e274b210f7f29c8080c1f2d121f4f8
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>event-valuechange delegation test</title>
</head>
<body>
<h1>event-valuechange delegation test</h1>
<form id="container">
<p><input type="text" id="a" class="odd"></p>
<p><input type="text" id="b" class="even"></p>
<p><input type="text" id="c" class="odd"></p>
<p><textarea id="d" class="even"></textarea></p>
<p><textarea id="e" class="odd"></textarea></p>
<p><textarea id="f" class="even"></textarea></p>
</form>
<button id="unsubscribe">Unsubscribe</button>
<button id="subscribe">Subscribe</button>
<script src="/build/yui/yui.js"></script>
<script>
var Y = YUI({filters: {'event-valuechange': 'debug'}}).use('event-valuechange', 'node-event-delegate', function (Y) {
var form = Y.one('#container'),
events = [];
function subscribe() {
events.push(form.delegate('valuechange', function (e) {
Y.log('#' + e.currentTarget.get('id') + ' .odd: "' + e.prevVal + '" -> "' + e.newVal + '"');
}, '.odd'));
events.push(form.delegate('valuechange', function (e) {
Y.log('#' + e.currentTarget.get('id') + ' .even: "' + e.prevVal + '" -> "' + e.newVal + '"');
}, '.even'));
events.push(form.delegate('valuechange', function (e) {
Y.log('#' + e.currentTarget.get('id') + ' function: "' + e.prevVal + '" -> "' + e.newVal + '"');
}, function (node) {
return node.getAttribute('type') === 'text';
}));
}
function unsubscribe() {
Y.Array.each(events, function (e) {
e.detach();
});
events = [];
}
Y.one('#subscribe').on('click', subscribe);
Y.one('#unsubscribe').on('click', unsubscribe);
subscribe();
});
</script>
</body>
</html>