bpu*_*lan 5 javascript twitter-bootstrap classiejs
我有这个错误,但因为我不熟悉代码.它来自startbootstrap(Creative)中的主题.该文件是
classie.js
码:
/*!
* classie - class helper functions
* from bonzo https://github.com/ded/bonzo
*
* classie.has( elem, 'my-class' ) -> true/false
* classie.add( elem, 'my-new-class' )
* classie.remove( elem, 'my-unwanted-class' )
* classie.toggle( elem, 'my-class' )
*/
/*jshint browser: true, strict: true, undef: true */
/*global define: false */
( 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 );
Run Code Online (Sandbox Code Playgroud)
错误在于:
elem.classList.add(c);
我不熟悉编写的代码.我将此文件与其他js文件一起包含在内.而且似乎其他js文件需要变量classie.
编辑:
这里是控制台的错误:
Uncaught TypeError: Cannot read property 'classList' of null
addClass @ classie.js?nngrmm:33
scrollPage @ cbpAnimatedHeader.js?nngrmm:30
Run Code Online (Sandbox Code Playgroud)
另外,我在bootstrap.js中有错误.
Uncaught TypeError: $(...).find(...).once is not a function
Drupal.behaviors.bootstrap.attach @ bootstrap.js?nngrmm:16
(anonymous function) @ drupal.js?nngrmm:76
x.extend.each @ jquery.min.js?v=1.10.2:4
Drupal.attachBehaviors @ drupal.js?nngrmm:74
(anonymous function) @ drupal.js?nngrmm:412
x.Callbacks.c @ jquery.min.js?v=1.10.2:4
x.Callbacks.p.fireWith @ jquery.min.js?v=1.10.2:4
x.extend.ready @ jquery.min.js?v=1.10.2:4
q @ jquery.min.js?v=1.10.2:4
Run Code Online (Sandbox Code Playgroud)
在这里的某个地方:
/**
* @file
* bootstrap.js
*
* Provides general enhancements and fixes to Bootstrap's JS files.
*/
var Drupal = Drupal || {};
(function($, Drupal){
"use strict";
Drupal.behaviors.bootstrap = {
attach: function(context) {
// Provide some Bootstrap tab/Drupal integration.
$(context).find('.tabbable').once('bootstrap-tabs', function () {
var $wrapper = $(this);
var $tabs = $wrapper.find('.nav-tabs');
var $content = $wrapper.find('.tab-content');
var borderRadius = parseInt($content.css('borderBottomRightRadius'), 10);
var bootstrapTabResize = function() {
if ($wrapper.hasClass('tabs-left') || $wrapper.hasClass('tabs-right')) {
$content.css('min-height', $tabs.outerHeight());
}
};
// Add min-height on content for left and right tabs.
bootstrapTabResize();
// Detect tab switch.
if ($wrapper.hasClass('tabs-left') || $wrapper.hasClass('tabs-right')) {
$tabs.on('shown.bs.tab', 'a[data-toggle="tab"]', function (e) {
bootstrapTabResize();
if ($wrapper.hasClass('tabs-left')) {
if ($(e.target).parent().is(':first-child')) {
$content.css('borderTopLeftRadius', '0');
}
else {
$content.css('borderTopLeftRadius', borderRadius + 'px');
}
}
else {
if ($(e.target).parent().is(':first-child')) {
$content.css('borderTopRightRadius', '0');
}
else {
$content.css('borderTopRightRadius', borderRadius + 'px');
}
}
});
}
});
}
};
Run Code Online (Sandbox Code Playgroud)
错误:
$(context).find('.tabbable').once('bootstrap-tabs',function(){
需要帮忙.谢谢.
小智 11
我今天遇到了同样的问题,但针对不同的主题,并希望在未来发布我的决议以帮助其他人.
问题出在cbpAnimatedHeader.js文件中.该文件定义了"scrollPage"函数,该函数调用"classie"函数.这就是为什么你最初看到错误是与classie.js文件.在scrollPage函数中,使用变量"header":
if ( sy >= changeHeaderOn ) {
classie.add(header, 'navbar-shrink' );
}
else {
classie.remove(header, 'navbar-shrink' );
}
Run Code Online (Sandbox Code Playgroud)
但是,标题不是以scrollPage函数可以读取的方式定义的.要修复错误,您可以全局定义标头,也可以在scrollPage函数中定义标头.我选择只将变量定义复制到函数中.这是cbpAnimatedHeader.js的最终结果:
function scrollPage() {
var sy = scrollY(),
header = document.querySelector( '.navbar-fixed-top' );
if ( sy >= changeHeaderOn ) {
classie.add(header, 'navbar-shrink' );
}
else {
classie.remove(header, 'navbar-shrink' );
}
didScroll = false;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我意识到我的问题是我将cbpAnimatedHeader.js文件从主体的底部移到了头部。因此,标头为null,因为html尚未呈现。
我没有将标题查找添加到scrollPage函数,而是将整个内容包装在了jQuery文档中。
$(function(){
var cbpAnimatedHeader = (function() {
var docElem = document.documentElement,
header = document.querySelector( '.navbar-fixed-top' ),
didScroll = false,
changeHeaderOn = 300;
function init() {
window.addEventListener( 'scroll', function( event ) {
if( !didScroll ) {
didScroll = true;
setTimeout( scrollPage, 250 );
}
}, false );
}
function scrollPage() {
var sy = scrollY();
header = document.querySelector( '.navbar-fixed-top' );
if ( sy >= changeHeaderOn ) {
classie.add( header, 'navbar-shrink' );
}
else {
classie.remove( header, 'navbar-shrink' );
}
didScroll = false;
}
function scrollY() {
return window.pageYOffset || docElem.scrollTop;
}
init();
})();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45257 次 |
| 最近记录: |