/** * mui target(action>popover>modal>tab>toggle) */ (function($, window, document) { /** * targets */ $.targets = {}; /** * target handles */ $.targetHandles = []; /** * register target * @param {type} target * @returns {$.targets} */ $.registerTarget = function(target) { target.index = target.index || 1000; $.targetHandles.push(target); $.targetHandles.sort(function(a, b) { return a.index - b.index; }); return $.targetHandles; }; window.addEventListener($.EVENT_START, function(event) { var target = event.target; var founds = {}; for (; target && target !== document; target = target.parentNode) { var isFound = false; $.each($.targetHandles, function(index, targetHandle) { var name = targetHandle.name; if (!isFound && !founds[name] && targetHandle.hasOwnProperty('handle')) { $.targets[name] = targetHandle.handle(event, target); if ($.targets[name]) { founds[name] = true; if (targetHandle.isContinue !== true) { isFound = true; } } } else { if (!founds[name]) { if (targetHandle.isReset !== false) $.targets[name] = false; } } }); if (isFound) { break; } } }); window.addEventListener('click', function(event) { //解决touch与click的target不一致的问题(比如链接边缘点击时,touch的target为html,而click的target为A) var target = event.target; var isFound = false; for (; target && target !== document; target = target.parentNode) { if (target.tagName === 'A') { $.each($.targetHandles, function(index, targetHandle) { var name = targetHandle.name; if (targetHandle.hasOwnProperty('handle')) { if (targetHandle.handle(event, target)) { isFound = true; event.preventDefault(); return false; } } }); if (isFound) { break; } } } }); })(mui, window, document);