我有一个页面,其中包含一个 div,页面加载时必须通过 JS 调整该 div 的大小。为了做到这一点,我给它一个 760px 的“默认宽度”,然后运行以下代码:
function resizeList()
{
var wlwidth,iwidth,nwidth;
wlwidth = document.body.clientWidth - 200 - 60;
iwidth = 320;
nwidth = Math.floor(wlwidth / iwidth) * iwidth;
$('#list').css('width',nwidth);
}
$(document).ready(function(){
// if we're looking at a list, do the resize-thing, now and on window resize
if (window.location.pathname.toString().split('/')[1] == "list")
{
resizeList();
window.onresize = resizeList;
}
});
Run Code Online (Sandbox Code Playgroud)
但是,页面可能需要一段时间才能加载,因为#listdiv 包含大量图像。因此,div 只会在所有内容加载完毕后才展开以填充正确的宽度。我不能只是把它从$(document).ready函数中取出,否则它会出错,说 document.body 是未定义的。
有没有办法#list在加载所有内容之前调整div 的大小?
编辑
请参阅:http : //www.google.com/images?q=whatever
他们已经实现了我想要成功的目标。该列表在页面加载时立即正确调整大小,然后填充。您可以通过 JS 调整窗口大小并观察元素平滑移动来判断它们的大小。可悲的是,谷歌的 …
在主体中加载脚本js文件后调用$(document).ready()吗?
如果我在脚本元素的头部放置$(document).ready(),它采用一个回调函数,该函数使用在文件中声明的函数,其脚本元素在主体中加载如下:
<!DOCTYPE HTML>
<html>
<script src="jquery.js" type="text/javascript"></script>
<script>
$(function(){
hello();
})
</script>
<head>
</head>
<body>
<script src="http://somewhere/helloFuncDeclaration.js" type="text/javascript"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是一种正确的方法,并保证在调用函数hello()之前将加载helloFuncDeclaration.js?
如何使用 Jasmine 测试 document.ready 块?更具体地说,如果我有一个像这样的块:
$(document).ready(
function () {
abc = true;
}
});
Run Code Online (Sandbox Code Playgroud)
如何使用 Jasmine 测试文档准备好后是否调用了内部函数?
“DOM 就绪”的现代替代是事件DOMContentLoaded。
您可以在 2 个全局对象上监听它:
window=> https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_eventdocument=> https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event现在我知道这个事件的原始目标是document根据上面的 MDN 链接,还可以“在 Window 界面上侦听此事件以在捕获或冒泡阶段处理它”。
window当捕获或冒泡阶段捕获事件更合适甚至需要捕获事件时,是否存在特定优势或特殊情况?
我有一个页面,我需要SWFObject,jQuery和Google Maps API.我认为我可以使用以下好处:
<script type="text/javascript" src="http://www.google.com/jsapi?key=INSERT-YOUR-KEY"></script>
<script type="text/javascript">
google.load("jquery", "1.4.1");
google.load("swfobject", "2.2");
google.load('maps', '2', {'callback': googleMapSetup });
</script>
Run Code Online (Sandbox Code Playgroud)
但是现在我在某处读到了(http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/)我需要使用
google.setOnLoadCallback(function() {
// Place init code here instead of $(document).ready()
});
Run Code Online (Sandbox Code Playgroud)
而不是$(document).ready()..这是真的吗?
在jQuery站点上,描述$(callback)是它的行为相同$(document).ready(function)但后面的示例显示了两种语法之间的一些差异.所以我想知道,有没有人确切知道两者之间的差异是什么?
我试图搜索并查看是否有任何列出的内容,但我没有看到任何内容.我一直在使用同位素制定了一个画廊,多数民众赞成,它工作正常,但在网页加载时,画廊中的图像显示了网页的中间,然后一旦被加载跳转到各自的立场.
我试图找出一种方法来设置容器隐藏,直到图像在他们的位置,然后用$ container.fadeIn(1000)淡入它们;
我只是不知道如何在加载后触发该功能.我已经尝试过使用Document.ready几个地方,似乎无法让它做出正确的反应.
<script>
$(function(){
var $container = $('#container');
$container.imagesLoaded( function(){
$container.isotope({
layoutMode : 'fitRows',
itemSelector : '.photo'
});
});
$container.fadeIn(1000);
});
Run Code Online (Sandbox Code Playgroud)
这种作品,但它并没有真正倾听图像完全加载.
考虑我正在运行的简化版本:
<html>
<head>
<script src="data.js"></script>
<script src="content.js"></script>
</head>
<body>
<div id="contentGoesHere"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
显然还有更多内容,但这是基本要点。在 content.js 中,我有几个函数可以根据 data.js 中包含的 json 数据将标记加载到我的 div 中。除了这些功能之外,还有以下几行:
$(document).ready(function()
{
loadContent();
});
Run Code Online (Sandbox Code Playgroud)
出于所有意图和目的,加载内容加载得很好,但在该代码中调用执行 jquery .show() 在几个 div 中的第一个 div,这些 div 在它们都附加到容器元素后加载。该代码没有执行,几乎就好像 div 还不存在一样。所以我尝试延迟加载:
<html>
<head>
<script src="data.js"></script>
</head>
<body>
<div id="contentGoesHere"></div>
</body>
<script src="content.js"></script>
</html>
Run Code Online (Sandbox Code Playgroud)
果然,两者都会导致显示第一个面板。如果 .ready() 应该等到 DOM 加载完毕,为什么延迟加载包含 $(document).ready() 函数的文件会有所不同?
我想用来ng-repeat在页面中显示超过100个图像.这些图像在加载时花费了大量时间,我不希望显示它们被加载到用户.所以,我只想在浏览器中加载它们之后显示它们.
如果加载了所有图像,有没有办法检测?
我有一个 Blazor 服务器应用程序,我需要在加载文档时运行一个 js 函数——当我使用“静态”模式时,jQuery$(document).ready()工作正常,但我需要使用“ServerPrerendered”模式——当用户点击导航栏上的不同链接时, $(document).ready() 永远不会触发,因为 Blazor 使用 SingalR 来更新内容。建议的方法是使用JSRuntime.InvokeVoidAsync("jsfunctiont")inside
OnAfterRenderAsync,defaultLayout.razor但问题是此事件发生在所有子组件完全呈现之前,因此我的 js 函数将失败。我的问题是在所有子组件完全渲染后调用js函数的方式是什么?这相当于$(document).ready()在 Blazor 服务器应用程序中使用“ServerPreRendered”模式?
太感谢了!
document-ready ×10
jquery ×6
javascript ×3
angularjs ×1
blazor ×1
callback ×1
dom ×1
dom-events ×1
fadein ×1
jasmine ×1
loading ×1
ready ×1
timing ×1