$(window).load(function() 并不总是有效
$(window).load(function() not always working
我正在尝试在我的网站上的 div 上实施 scrollbar plugin,但我遇到了一些问题。首先它应该是这样工作的:
jQuery(document).ready(function ($) {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
但我只能让它这样工作:
$(window).load(function() {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
但是对于 window.load 脚本似乎并不总是有效,或者至少滚动条并不总是出现。
我不是很熟悉 js 或 jquery 但我将 src 文件 perfect-scrollbar.js
插入到一个文件夹中,我通常这样调用它: <script src="http://domain.com/javascript/perfect-scrollbar.js"></script>
在header 并将我上面用 window.load 描述的代码紧跟在 <script></script>
之间。我假设这与另一个准备好的文档有冲突,所以我在网上搜索解决方案和其他加载它的方法,我发现没有冲突,并尝试像这样实现:
$.noConflict();
jQuery( document ).ready(function( $ ) {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
});
但仍然没有结果,唯一的作用就是停止网站的所有 jquery 工作。谁能帮我这个?提前致谢
的问题
jQuery(document).ready(function ($) {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
是您通过使用该标识符命名匿名函数的参数而在本地范围内留下 $
未定义。 jQuery 不向该函数传递任何参数,但您的参数声明掩盖了 $
的全局定义。如果您没有使用无冲突模式,那么 $
将在全局范围内可用,因此以下内容应该有效:
$(document).ready(function () {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
顺便说一句,noConflict 的目的是避免与可能依赖于 $
的全局定义的其他代码发生冲突,这不同于 jQuery 对 [=12= 的使用] 作为 jQuery
.
的别名
我已经测试过,document.ready
应该可以正常工作。
CSS
.chat-messages {
position: fixed;
height: 300px;
overflow: hidden;
}
编辑:
由于您将此与其他脚本结合使用,可以尝试在最顶部将您的选择器声明为变量。
JQuery
$(function () {
var $chat = $('.chat-messages');
...other scripts/functions...
$chat.perfectScrollbar({suppressScrollX: true});
});
这里是Fiddle.
非常感谢你们的帮助,我在这里找到了这个解决方法:[src]
var visible = true;
setInterval(
function()
{
if(visible)
if($('#element').not(':hidden'))
{
visible = false;
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
}
else
if($('#element').is(':hidden'))
{
visible = true;
// do something
}
}, 1000);
我正在尝试在我的网站上的 div 上实施 scrollbar plugin,但我遇到了一些问题。首先它应该是这样工作的:
jQuery(document).ready(function ($) {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
但我只能让它这样工作:
$(window).load(function() {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
但是对于 window.load 脚本似乎并不总是有效,或者至少滚动条并不总是出现。
我不是很熟悉 js 或 jquery 但我将 src 文件 perfect-scrollbar.js
插入到一个文件夹中,我通常这样调用它: <script src="http://domain.com/javascript/perfect-scrollbar.js"></script>
在header 并将我上面用 window.load 描述的代码紧跟在 <script></script>
之间。我假设这与另一个准备好的文档有冲突,所以我在网上搜索解决方案和其他加载它的方法,我发现没有冲突,并尝试像这样实现:
$.noConflict();
jQuery( document ).ready(function( $ ) {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
});
但仍然没有结果,唯一的作用就是停止网站的所有 jquery 工作。谁能帮我这个?提前致谢
jQuery(document).ready(function ($) {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
是您通过使用该标识符命名匿名函数的参数而在本地范围内留下 $
未定义。 jQuery 不向该函数传递任何参数,但您的参数声明掩盖了 $
的全局定义。如果您没有使用无冲突模式,那么 $
将在全局范围内可用,因此以下内容应该有效:
$(document).ready(function () {
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
});
顺便说一句,noConflict 的目的是避免与可能依赖于 $
的全局定义的其他代码发生冲突,这不同于 jQuery 对 [=12= 的使用] 作为 jQuery
.
我已经测试过,document.ready
应该可以正常工作。
CSS
.chat-messages {
position: fixed;
height: 300px;
overflow: hidden;
}
编辑:
由于您将此与其他脚本结合使用,可以尝试在最顶部将您的选择器声明为变量。
JQuery
$(function () {
var $chat = $('.chat-messages');
...other scripts/functions...
$chat.perfectScrollbar({suppressScrollX: true});
});
这里是Fiddle.
非常感谢你们的帮助,我在这里找到了这个解决方法:[src]
var visible = true;
setInterval(
function()
{
if(visible)
if($('#element').not(':hidden'))
{
visible = false;
"use strict";
$('.chat-messages').perfectScrollbar({suppressScrollX: true});
}
else
if($('#element').is(':hidden'))
{
visible = true;
// do something
}
}, 1000);