ratchet/js/segmented-controllers.js

47 строки
1.4 KiB
JavaScript
Исходник Обычный вид История

2012-11-05 04:03:39 +04:00
/* ----------------------------------
2014-02-25 08:18:44 +04:00
* Segmented controls v2.0.0
2012-11-05 04:03:39 +04:00
* Licensed under The MIT License
* http://opensource.org/licenses/MIT
* ---------------------------------- */
!function () {
var getTarget = function (target) {
var i, segmentedControls = document.querySelectorAll('.segmented-control .control-item');
2012-11-05 04:03:39 +04:00
for (; target && target !== document; target = target.parentNode) {
for (i = segmentedControls.length; i--;) { if (segmentedControls[i] === target) return target; }
2012-11-05 04:03:39 +04:00
}
};
window.addEventListener("touchend", function (e) {
var activeTab;
var activeBodies;
2012-11-05 04:03:39 +04:00
var targetBody;
var targetTab = getTarget(e.target);
2014-02-01 06:02:18 +04:00
var className = 'active';
2012-11-05 04:03:39 +04:00
var classSelector = '.' + className;
if (!targetTab) return;
2012-11-05 04:03:39 +04:00
activeTab = targetTab.parentNode.querySelector(classSelector);
if (activeTab) activeTab.classList.remove(className);
targetTab.classList.add(className);
if (!targetTab.hash) return;
2012-11-05 04:03:39 +04:00
targetBody = document.querySelector(targetTab.hash);
2012-11-05 04:03:39 +04:00
if (!targetBody) return;
activeBodies = targetBody.parentNode.querySelectorAll(classSelector);
2012-11-05 04:03:39 +04:00
2013-04-15 10:58:56 +04:00
for (var i = 0; i < activeBodies.length; i++) {
activeBodies[i].classList.remove(className);
}
2012-11-05 04:03:39 +04:00
2013-04-03 18:55:58 +04:00
targetBody.classList.add(className);
2012-11-05 04:03:39 +04:00
});
window.addEventListener('click', function (e) { if (getTarget(e.target)) e.preventDefault(); });
}();