我正在使用以下jQuery代碼來隱藏/顯示移動彈出式菜單。更改錨點上的div類。如何使用classie.js實現?
(function(window) {
'use strict';
// class helper functions from bonzo https://github.com/ded/bonzo
function classReg(className) {
return new RegExp("(^|\\s+)" + className + "(\\s+|$)"); }
// classList support for class management
// altho to be fair, the api sucks because it won't accept multiple classes at once var hasClass, addClass, removeClass;
if ('classList' in document.documentElement) {
hasClass = function(elem, c) {
return elem.classList.contains(c);
};
addClass = function(elem, c) {
elem.classList.add(c);
};
removeClass = function(elem, c) {
elem.classList.remove(c);
};
}
else { hasClass = function(elem, c) {
return classReg(c).test(elem.className);
};
addClass = function(elem, c) {
if (!hasClass(elem, c)) {
elem.className = elem.className + ' ' + c;
} }; removeClass = function(elem, c) {
elem.className = elem.className.replace(classReg(c), ' ');
}; }
function toggleClass(elem, c) { var fn = hasClass(elem, c) ? removeClass : addClass; fn(elem, c); }
var classie = {
// full names
hasClass: hasClass,
addClass: addClass,
removeClass: removeClass,
toggleClass: toggleClass,
// short names
has: hasClass,
add: addClass,
remove: removeClass,
toggle: toggleClass };
// transport if (typeof define === 'function' && define.amd) { // AMD define(classie); } else { // browser global window.classie
= classie; }
})(window);
(function() {
var triggerBttn = document.getElementById('trigger-overlay'), overlay = document.querySelector('div.overlay'),
closeBttn = overlay.querySelector('button.overlay-close'); transEndEventNames = {
'WebkitTransition': 'webkitTransitionEnd',
'MozTransition': 'transitionend',
'OTransition': 'oTransitionEnd',
'msTransition': 'MSTransitionEnd',
'transition': 'transitionend'
},
transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ],
support = { transitions : Modernizr.csstransitions };
function toggleOverlay() {
if(classie.has(overlay, 'open')) {
classie.remove(overlay, 'open');
classie.add(overlay, 'close');
var onEndTransitionFn = function(ev) {
if(support.transitions) {
if(ev.propertyName !== 'visibility') return;
this.removeEventListener(transEndEventName, onEndTransitionFn);
}
classie.remove(overlay, 'close');
};
if(support.transitions) {
overlay.addEventListener(transEndEventName, onEndTransitionFn); }
else {
onEndTransitionFn(); } } else if(!classie.has(overlay, 'close')) { classie.add(overlay, 'open'); } }
triggerBttn.addEventListener('click', toggleOverlay); closeBttn.addEventListener('click', toggleOverlay); })();
$("a").click(function(){
if(!classie.has(overlay, 'close')) {
classie.add(overlay, 'open');
}
});
我想寫的點擊div.overlay內的錨時將類div.overlay的改變,從「開放」到「關閉」的功能。
我試過這個,但肯定有一些語法和邏輯錯誤。也不知道把它放在哪裏。 。
$( 「A」)點擊(函數(){ 如果(classie.has(疊加, '關閉')){ classie.add(疊加, '開');! } });
有人可以幫助我編寫函數來實現更改類在關閉點擊「關閉」,並指示我在哪裏放置它?
我試圖實現一個答案,但無濟於事。也許看着我的HTML代碼將有所幫助。我的選擇器有多特殊? 謝謝。
所有的 <p><button id="trigger-overlay" class="whitetext smalltext quickfade" type="button">MENU</button></p>
<div class="overlay overlay-scale">
<button type="button" class="overlay-close fade">Close</button>
<div class="info">
<div id="hamdiv">
<a id="hammenu" class="blacktext quickfade" href="home.html#graybox.html">ABOUT</a>
<a id="hammenu" class="blacktext quickfade" href="work.html">WORK</a>
<a id="hammenu" class="blacktext quickfade" href="home.html#footer">CONTACT</a>
</div>
</div>
</div>
感謝您的幫助。我不得不改變點擊功能的範圍以使其起作用,但現在它運行良好。祝你有個好的一天。 – dillonjacobson12345