Browse Source

Adds delegated events and mutation observers #1117

pull/1139/head
jlukic 10 years ago
parent
commit
48451c5427
1 changed files with 28 additions and 19 deletions
  1. 47
      src/definitions/modules/dropdown.js

47
src/definitions/modules/dropdown.js

@ -62,6 +62,7 @@ $.fn.dropdown = function(parameters) {
selectionCache = false,
element = this,
instance = $module.data(moduleNamespace),
observer,
module
;
@ -76,7 +77,7 @@ $.fn.dropdown = function(parameters) {
if(hasTouch) {
module.bind.touchEvents();
}
module.observeChanges();
module.bind.mouseEvents();
module.bind.keyboardEvents();
module.instantiate();
@ -92,18 +93,26 @@ $.fn.dropdown = function(parameters) {
destroy: function() {
module.verbose('Destroying previous dropdown for', $module);
$item
.off(eventNamespace)
;
$search
.off(eventNamespace)
;
$module
.off(eventNamespace)
.removeData(moduleNamespace)
;
},
observeChanges: function() {
if(MutationObserver !== undefined) {
observer = new MutationObserver(function(mutations) {
module.debug('DOM tree modified, updating selector cache');
module.refresh();
});
observer.observe(element, {
childList : true,
subtree : true
});
module.debug('Setting up mutation observer', observer);
}
},
setup: {
layout: function() {
@ -191,14 +200,14 @@ $.fn.dropdown = function(parameters) {
.on('keydown' + eventNamespace, module.event.keydown)
;
if( module.is.searchable() ) {
$search
.on( module.get.inputEvent(), module.event.input)
$module
.on(module.get.inputEvent(), selector.search, module.event.input)
;
}
if( module.is.searchSelection() ) {
$search
.on('focus' + eventNamespace, module.event.searchFocus)
.on('blur' + eventNamespace, module.event.blur)
$module
.on('focus' + eventNamespace, selector.search, module.event.searchFocus)
.on('blur' + eventNamespace, selector.search, module.event.blur)
;
}
else {
@ -217,9 +226,9 @@ $.fn.dropdown = function(parameters) {
.on('touchstart' + eventNamespace, module.event.test.toggle)
;
}
$item
.on('touchstart' + eventNamespace, module.event.item.mouseenter)
.on('touchstart' + eventNamespace, module.event.item.click)
$module
.on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter)
.on('touchstart' + eventNamespace, selector.item, module.event.item.click)
;
},
mouseEvents: function() {
@ -242,10 +251,10 @@ $.fn.dropdown = function(parameters) {
;
}
}
$item
.on('mouseenter' + eventNamespace, module.event.item.mouseenter)
.on('mouseleave' + eventNamespace, module.event.item.mouseleave)
.on('click' + eventNamespace, module.event.item.click)
$module
.on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter)
.on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave)
.on('click' + eventNamespace, selector.item, module.event.item.click)
;
},
intent: function() {

Loading…
Cancel
Save