我已将多个文件中的多个函数附加到$(document).ready,并希望将单个函数附加到它们之前作为$(document).ready处理的第一个函数或者在$(document)之前独立触发的函数.ready处理程序。 有没有办法处理jQuery在jQuery.fn.ready中内部触发的函数的顺序,或挂钩在jQuery.fn.ready之前调用的函数。 在第三方脚本中编辑jQuery.fn.ready是安全的,还是会在其他第三方插件中引起可怕的敲击效果(除了编辑jQuery.fn.ready本身的插件) [编辑]: 举个例子 $(document).ready(function b() {}); …. $(document).ready(function a() {/* optional setup*/}); …. $(document).ready(function c() {}); 函数a首先需要与订单无关,但只能在几页上调用。 我不能保证b或c的顺序,所以我不能在b或c的开头触发自定义事件来触发a。 所以我想要一个通用的解决方案,我可以用它来强制放置一个jQuery的内部readyList或挂钩到jQuery的ready函数并安全地编辑它,以便它在readyList中的任何其他函数之前调用。 [进一步编辑] 如果可能的话,我宁愿不必重新设计javascript代码执行顺序,或者除了函数a()之外还必须触及任何其他代码。 我知道重组会让我解决这个问题,但我宁愿只写一个函数 $.beforeReady(function a() {});
我是jquery的新手。 我刚才读到这两个是等价的: $(document).ready(function() {}); $(function() {}); 哪一个更好的做法,或更多的接受? 第一个让我更清楚,因为它声明了“document.ready”部分 – 但是再一次,我是jquery的新手。 对于任何有jquery经验的人来说,第二个选项可能就是明确暗示“document.ready”。 我应该选择以下哪个选项?
我有一个页面([LINK REMOVED])在FireFox和Chrome中运行得非常好,但出于某种原因,我在大多数(如果不是所有版本的IE)中都会出现“预期的对象”错误。 该错误发生在该行上 $(document).ready(function() { //^ Error occurs here ^ … } 我正在使用jQuery Tools ,它实现了jQuery 1.4.2,以及一些额外的东西。 我做了一些阅读。 我已经尝试将准备好的函数放在代码的末尾,就在标记之前 – 此外,我已经尝试实现一个计时器让IE在执行之前加载,我无法动摇这个错误。
我的onclick活动有效。 但是,当onclick事件在动态HTML上时,它不再有效。 如:没有任何反应。 $(document).ready(function () { $(“#guestlist .viewguestdetails”).click(function () { $(“.guestdetails[data-id=’18’]”).toggle(); }); }); 然后,我将此HTML动态添加到页面: (add your data) some data 但是,当我点击“(添加您的数据)”时,没有任何反应。 当我在我的页面中静态地使用HTML时,这种’guestdetails’div的切换确实有效。 似乎动态插入的HTML没有附加事件? 更新: 新的动态HTML我在一个现有的表中插入一行。 其他行已经将事件附加到onclick事件,例如: $(“span.guestattendance”).click(function () { if ($(this).hasClass(‘checkbox-on’)) { $(this).removeClass(‘checkbox-on’).addClass(‘checkbox-off’); $(“#guestday”).removeClass(‘checkbox-on’).addClass(‘checkbox-off’); } else { $(this).removeClass(‘checkbox-off’).addClass(‘checkbox-on’); if ($(“#guestceremony”).hasClass(‘checkbox-on’) && $(“#guestreception”).hasClass(‘checkbox-on’) && $(“#guestdiner”).hasClass(‘checkbox-on’) && $(“#guestparty”).hasClass(‘checkbox-on’)) { $(“#guestday”).removeClass(‘checkbox-off’).addClass(‘checkbox-on’); } } }); 由于用户可以插入多于1行,我没有使用id,而是在我插入的元素周围添加了一个包装器: 然后在ready()函数中: $(‘.newrow_wrapper’).on(‘click’, ‘span’, function […]
在我的网站上,我有一个jquery函数,一旦页面加载就从另一个(安全的)服务器检索数据。 使用jsonp调用我当前在文档就绪事件后加载此数据: $(document).ready(function () { $.getJSON(_secureHost + ‘/base/members/current.aspx?callback=?’, function (data) { initPage(data); }); }); 我对上述调用不喜欢的是,jsonp实际上可以在文档就绪事件之前被执行,从而减慢页面加载速度。 因此,如果我在页面中包含jquery(即不使用脚本标记引用),则以下代码工作正常并且页面加载速度更快: $.getJSON(_secureHost + ‘/base/members/current.aspx?callback=?’, function (data) { $(document).ready(function () { initPage(data); }); }); 但是在每个页面中包含jquery是一个23k的开销,我想避免。 我如何测试是否已加载jquery,并且只有在加载jquery时才执行initPage()函数? 编辑:更确切地说,如果加载了jquery,我需要反复检查,然后执行该事件。 计时器工作可能是解决方案.. 解决方案:我创建了一个执行jquery检查的preinit。 我的页面加载速度不快:)。 感谢大家! function preInit() { // wait until jquery is loeaded if (!(typeof jQuery === ‘function’)) { window.setTimeout(function () { //console.log(count++); preInit(); […]
我刚刚开始关注JQuery。 我目前在我的网络应用程序中没有任何AJAX。 我在HTML中的现有JavaScript看起来像: Find what? ADD FIND 这将显示[添加]和[查找]的按钮。 对于Find,有必要提交表单,我使用MyFormSubmit()validation数据,为页面添加视觉效果,然后POST数据。 我可以为Find按钮添加一个CLASS或ID,在JQuery中我可以编写如下内容: $(function() { $(“.MySearchButtonClass”).click(function() { // validate and process form here }); }); 在我与JQuery理解的“新手”阶段,我不明白为什么我会这样做 我的旧方法识别对象附近的方法。 在用户按下按钮之前,JS可能存在未加载的风险(是否存在?JS的LOAD位于页面顶部)。 在加载文档之前,JQuery Document Ready方法不会被激活(我假设JS已经存在并准备好运行了吗?),但它将代码移动到我的HTML文件的一个单独部分 – 所以当我在HTML源代码中看到了MyButtonArray DIV,对我而言哪些对象有方法,哪些对象没有方法。 能否帮助我了解我的选择以及我应该注意的好处/问题? 编辑 :我觉得DOM操作 – 比如点击任何带有类“LightBoxThumb”的缩略图时可以出现的LightBox – 会使用Unobtrusive Javascript。 但是,我正在努力说服自己,具有特定操作的按钮应该以这种方式应用其方法。 (我当然不会在按钮上放任何代码而不是单个函数调用“其他地方”的东西,但在我看来,这是我最好的线索,关于该按钮的作用,以及不显眼的Javascript图层可能会更难确定。) Edit2 – 接受的答案 我采取了Russ Cams的回答。 它以一种有助于我理解更多关于如何以及何时应该使用它的方式来描述Unobtrusive Javascript。 目前(当我有更多经验时可能会改变!)我会坚持使用OnClick事件对一个对象进行单一的,不变的动作,因为我觉得我更容易调试 – 并诊断出现问题。 对于允许单击标题列进行排序(以及该类型的情况)的表上的ZebraStripes,我可以看到Unobtrusive Javascript方法的好处 Russ的最终评论特别有用,在此重复: “@Kristen […]
很抱歉,如果之前已经回答了这个问题,但所有搜索都会讨论差异,如果可能的话,不要将两者结合使用。 简单地说, $(window).load.(function() {})可以在$(document).ready.(function() {}) INSIDE中使用吗? 在加载DOM之后我应该做一些事情但是我想在图像加载完成后才显示某些元素。 在Explorer 8中唯一有效的方法是将$(window).load函数放在$(document).ready 。 这是一种可接受的做法吗? 我只想使用最可接受的方法来显示包含小图像的DIV ,如工具栏,在完全构造之后。 ( hidden visibility与display none ,例如)。 这个DIV的HTML由$(document).ready的代码编写,然后在使用$(window).load之前使用$(‘body’).append()附加到body。 我在Explorer 8中遇到了很多问题。
我正在开发一个包含多个代码块的代码库,在document.ready()(jQuery)上设置一些行为。 有没有办法强制在任何其他块之前调用一个特定的块? 背景:我需要在自动化测试环境中检测JS错误,因此我需要在任何其他JS代码执行之前开始记录JS错误的代码。
我正在开发一个基于所有照片的网站。 此站点的某些区域需要基于图像尺寸进行计算才能正常工作。 我所发现的是,准备好文件的时间太早了,因此我的gui表现不正常。 我删除了文档就绪函数并用好的’ol window.onload函数替换它,因为如果我正确读取,则在图像完全加载之前不会触发此函数。 我的问题是,这会导致任何问题吗? 还有其他我可能错过的解决方案吗? 谢谢你的帮助!
以下jQuery代码段的最终结果是否相同? 小片1: $(function() { alert(‘test!’); }); 摘录2: $(document).ready(function() { alert(‘test!’); }); 换句话说, $(function(){})只是$(document).ready(function() { });简写$(document).ready(function() { }); ? 我问的原因是因为我们在使用jQuery和jQuery UI构建的小应用程序中看到了一些奇怪的问题。 有时,通过单击按钮执行表单提交操作时,浏览器窗口将冻结。 我们仍然可以使用底层浏览器窗口(启动弹出窗口的窗口),直到我们在那里执行某些操作。 用户只能通过强制关闭浏览器(显然是Internet Explorer)继续。 我们怀疑这与Acrobat PDF插件有关,但我只是在这里查看所有角度,因为我发现这个问题似乎表现出类似的行为。