昨天我遇到了一个问题,.on('click')
我分配的事件处理程序无法正常工作.事实证明这是因为我试图.on('click')
在DOM中存在该元素之前应用它,因为它是通过AJAX加载的,因此当document.ready()
达到这一点时它还不存在.
我用一个尴尬的解决方法解决了它,但我的问题是,如果我要<script>
在ajax加载的内容中添加一个标记而另一个document.ready()
内部,那么document.ready()
只有在ajax内容被加载后才能解析第二个吗?换句话说,它是否认为单独加载的ajax内容是另一个document
,如果是这样,document.ready()
在ajax加载的HTML中是否有另一种内容以我认为的方式工作?
另外; 什么是处理这种情况的更好方法?(需要将事件侦听器附加到尚不存在的DOM元素上document.ready()
)
我有一个关于jQuery的问题 $(document).ready
假设我们有一个包含2个JavaScript文件的HTML页面
<script language="javascript" src="script1.js" ></script>
<script language="javascript" src="script2.js" ></script>
Run Code Online (Sandbox Code Playgroud)
现在让我们在这两个脚本文件中说,我们$(document)
如下
在script1.js里面:
$(document).ready(function(){
globalVar = 1;
})
Run Code Online (Sandbox Code Playgroud)
在script2.js里面:
$(document).ready(function(){
globalVar = 2;
})
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:
- 这两个就绪事件函数都会被触发吗?
- 如果是,那么它们被解雇的顺序是什么,因为文件将同时为两者准备好?
- 这种方法是推荐还是我们理想情况下应该只有1 $(文件).ready?
- 所有浏览器(IE,FF等)的执行顺序是否相同?
谢谢.
我有一个大量使用jQuery的网页.
我的目标是只在一切准备就绪时显示页面.
有了这个我想避免向用户显示恼人的页面呈现.
到目前为止我试过这个(#body_holder
是体内的包装):
$(function(){
$('#body_holder').hide();
});
$(window).load(function() {
$("#body_holder").show();
});
Run Code Online (Sandbox Code Playgroud)
这完全没问题,但弄乱了布局.
问题是隐藏包装器会干扰其他jQuery函数和使用的插件(例如layout-plugin).
所以我想必须有另一个技巧来做到这一点.在发生window.load之前,可能会在身体上放置一张图片或div?
你用什么方法?
编辑:
该解决方案最有可能有别的办法比display:none
或hide()
;
这样做有什么区别
$(function() {
$("a").click(function(event){
alert("Thanks for visiting!");
});
});
Run Code Online (Sandbox Code Playgroud)
还有这个
$(document).ready(function(){
$("a").click(function(event){
alert("Thanks for visiting!");
});
});
Run Code Online (Sandbox Code Playgroud) 注意:我现在已经创建了一个jQuery插件,这是我尝试解决这个问题.我相信它可以改进,我可能忽略了很多用例,所以如果有人想提供反馈请随意:-) https://github.com/WickyNilliams/ReadyBinder
我没有这样的问题,但认为这将是一个有趣的讨论点,我希望人们对此有一些有趣的想法.
基本上,我在一个大型网站上工作,我们越来越多地编写越来越多的JavaScript.这很好,我喜欢JS独特的方法,我发现在语言的一些较暗的年代中可爱的奇怪之处;-)然而,一直困扰我的一件事是如何管理文档就绪事件,因为它们变得越来越大随着时间的推移(因此对于所服务的页面不太专注/特定)
问题是我们有一个JS文件(合并和缩小,虽然这对我的问题有点无关紧要).大多数JS都是使用揭示模块模式编写的,jQuery是我们选择的框架.所以我们所有的JS功能都在逻辑上分组为方法,命名空间,然后在脚本文件的底部我们有这个
$(function(){
//lots of code here, usually calling encapsulated methods
//on our namespaced revealing module
});
Run Code Online (Sandbox Code Playgroud)
问题是并非本文档就绪处理程序中的所有代码都与每个页面相关.例如,在一个页面上只有10%可能是相关的,在另一个页面上,80%可能是相关的.对我来说,这感觉非常错误,我觉得我应该只执行每页需要的代码,主要是为了提高效率,还要保持可维护性.
我搜索谷歌搜索这个问题的方法,但找不到任何东西,也许我只是在寻找错误的东西!
无论如何,所以我的问题是:
期待人们对此事的看法.
干杯
我正在开发一个包含多个代码块的代码库,在document.ready()(jQuery)上设置一些行为.有没有办法强制在任何其他块之前调用一个特定的块?
背景:我需要在自动化测试环境中检测JS错误,因此我需要在任何其他JS代码执行之前开始记录JS错误的代码.
在其中创建函数是否正确
$(document).ready(function() {
Run Code Online (Sandbox Code Playgroud)
像这样:
$(document).ready(function() {
function callMe() {
}
});
Run Code Online (Sandbox Code Playgroud)
.ready()
在dom准备好之前不需要调用函数,并且ready()
触发事件内部的事件.
只是澄清一点 - 这里是代码,它将说明问题:
$(function() {
var ind = 0;
// some event is executed and changes the value of the ind
// another event which affects the ind variable
// and another one - after this event we call our function
// there's another event - and we call our function again
Run Code Online (Sandbox Code Playgroud)
我需要调用的函数需要ind
变量的更新值- 我想我可以将其作为参数传递,但是有更好的方法吗?
另外 - 另一个重要的事情是,function()
问题还可以改变ind
变量的值- 例如递增它(ind++ …
我有一个custom.js文件,其中有几个元素,其中包含click和其他绑定方法.整个文件封装在document.ready()中,一切正常.但是,当我做一个AJAX帖子时,显然document.ready()永远不会再为当前页面触发.无论如何我可以再次触发document.ready()或者我需要让命名函数中的所有内容从create.js.erb中调用它们吗?
我正在看一段代码:
(function($) {
// other code here
$(document).ready(function() {
// other code here
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我虽然IIFE执行$(document).ready的功能,这段代码是否正确?或者我可以删除$(document).ready并将代码直接放在IIFE中.
我正在开发一个基于所有照片的网站.此站点的某些区域需要基于图像尺寸进行计算才能正常工作.我所发现的是,准备好文件的时间太早了,因此我的gui表现不正常.
我删除了文档就绪函数并用好的'ol window.onload函数替换它,因为如果我正确读取,则在图像完全加载之前不会触发此函数.
我的问题是,这会导致任何问题吗?还有其他我可能错过的解决方案吗?
谢谢你的帮助!
document-ready ×10
jquery ×10
javascript ×4
ajax ×1
document ×1
dom ×1
html ×1
iife ×1
post ×1