【发布时间】:2014-08-15 22:47:57
【问题描述】:
嗨,我想修改本教程中关于鼓膜http://tympanus.net/Development/FullscreenOverlayStyles/index12.html 的代码如果可能的话,我想制作多个按钮来打开覆盖。原来的代码是这样的
(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 };
s = Snap( overlay.querySelector( 'svg' ) ),
path = s.select( 'path' ),
steps = overlay.getAttribute( 'data-steps' ).split(';'),
stepsTotal = steps.length;
function toggleOverlay() {
if( classie.has( overlay, 'open' ) ) {
var pos = stepsTotal-1;
classie.remove( overlay, 'open' );
classie.add( overlay, 'close' );
var onEndTransitionFn = function( ev ) {
classie.remove( overlay, 'close' );
},
nextStep = function( pos ) {
pos--;
if( pos < 0 ) return;
path.animate( { 'path' : steps[pos] }, 60, mina.linear, function() {
if( pos === 0 ) {
onEndTransitionFn();
}
nextStep(pos);
} );
};
nextStep(pos);
}
else if( !classie.has( overlay, 'close' ) ) {
var pos = 0;
classie.add( overlay, 'open' );
var nextStep = function( pos ) {
pos++;
if( pos > stepsTotal - 1 ) return;
path.animate( { 'path' : steps[pos] }, 60, mina.linear, function() { nextStep(pos); } );
};
nextStep(pos);
}
}
triggerBttn.addEventListener( 'click', toggleOverlay );
closeBttn.addEventListener( 'click', toggleOverlay );
})();
我正在尝试使用每个功能,所以我添加了:
var triggerBttn;
$(".trigger-overlay").each(function () {
triggerBttn = $(this).attr('id');
(function() {
var
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 };
s = Snap( overlay.querySelector( 'svg' ) ),
path = s.select( 'path' ),
steps = overlay.getAttribute( 'data-steps' ).split(';'),
stepsTotal = steps.length;
function toggleOverlay() {
if( classie.has( overlay, 'open' ) ) {
var pos = stepsTotal-1;
classie.remove( overlay, 'open' );
classie.add( overlay, 'close' );
var onEndTransitionFn = function( ev ) {
classie.remove( overlay, 'close' );
},
nextStep = function( pos ) {
pos--;
if( pos < 0 ) return;
path.animate( { 'path' : steps[pos] }, 60, mina.linear, function() {
if( pos === 0 ) {
onEndTransitionFn();
}
nextStep(pos);
} );
};
nextStep(pos);
}
else if( !classie.has( overlay, 'close' ) ) {
var pos = 0;
classie.add( overlay, 'open' );
var nextStep = function( pos ) {
pos++;
if( pos > stepsTotal - 1 ) return;
path.animate( { 'path' : steps[pos] }, 60, mina.linear, function() { nextStep(pos); } );
};
nextStep(pos);
}
}
triggerBttn.addEventListener( 'click', toggleOverlay );
closeBttn.addEventListener( 'click', toggleOverlay );
})();
});
但由于某种原因它说
未捕获的类型错误:无法读取未定义的属性“addEventListener”
【问题讨论】:
标签: jquery undefined typeerror