以下是速记$(document).ready
吗?
(function($){
//some code
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我看到这种模式使用了很多,但我找不到任何引用.如果它是速记$(document).ready()
,是否有任何特殊原因可能无效?在我的测试中,似乎总是在准备好的事件之前开火.
我想调用一些jQuery函数以div为目标.该表填充了ng-repeat
.
我打电话的时候
$(document).ready()
Run Code Online (Sandbox Code Playgroud)
我没有结果.
也
$scope.$on('$viewContentLoaded', myFunc);
Run Code Online (Sandbox Code Playgroud)
没有帮助.
在ng-repeat群体完成后,有没有办法正确执行功能?我已经阅读了关于使用自定义的建议directive
,但我不知道如何将它与ng-repeat和我的div一起使用...
javascript jquery document-ready angularjs angularjs-ng-repeat
我有一个看似简单的问题,没有明显的(通过阅读Angular JS文档)解决方案.
我有一个Angular JS指令,它根据其他DOM元素的高度进行一些计算,以定义DOM中容器的高度.
类似于此的东西在指令内部发生:
return function(scope, element, attrs) {
$('.main').height( $('.site-header').height() - $('.site-footer').height() );
}
Run Code Online (Sandbox Code Playgroud)
问题是,当指令运行时,$('site-header')
无法找到,返回一个空数组而不是我需要的jQuery包装DOM元素.
是否有我可以在我的指令中使用的回调只在DOM加载后运行,我可以通过正常的jQuery选择器样式查询访问其他DOM元素?
我在stackoverflow中看到了这个问题,但感觉它根本没有得到回答.
有$(document).ready
必要吗?
我将所有javascripts链接到页面底部,所以理论上它们都是在文档准备就绪后全部运行的.
当我第一次开始使用Javascript/jQuery时,我被告知要使用document.ready,但我从未真正了解过原因.
有人可以提供一些基本指导,以便将javascript/jquery代码包装在jQuery中document.ready
吗?
我感兴趣的一些主题:
.on()
方法:我使用.on()
AJAX 的方法(通常是动态创建的DOM元素)..on()
点击处理程序应该始终在里面 document.ready
吗?更新:为了遵循最佳实践,我的所有javascript(jQuery库和我的应用程序的代码)都位于我的HTML页面的底部,我defer
在我的AJAX加载页面上使用包含jQuery的脚本上的属性,以便我可以访问这些页面上的jQuery库.
我正在使用RequireJS并且需要在DOM上初始化一些东西.现在,RequireJS提供了domReady
插件,但我们已经有了jQuery $(document).ready()
,因为我需要jQuery,所以我可以使用它.
所以我有两个选择:
使用domReady
插件:
require(['domReady'], function (domReady) {
domReady(function () {
// Do my stuff here...
});
});
Run Code Online (Sandbox Code Playgroud)用途$(document).ready()
:
$(document).ready(function() {
// Do my stuff here...
});
Run Code Online (Sandbox Code Playgroud)我应该选择哪一个,为什么?
这两个选项似乎都按预期工作.我对jQuery没有信心,因为RequireJS正在做它的魔力; 也就是说,由于RequireJS会动态添加脚本,我担心在加载所有动态请求的脚本之前可能会出现DOM.然而,只有domReady
当我已经需要jQuery时,RequireJS才会增加额外JS的负担.
domReady
在我们可以使用jQuery时,RequireJS会提供一个插件$(document).ready();
?我没有看到包含另一个依赖项的任何优点.据我所知,domReady
文档准备好后,将不会获取或执行需要的模块,并且您也可以执行同样需要jQuery的模块:
require(['jQuery'], function ($) {
$(document).ready(function () {
// Do my stuff here...
});
});
Run Code Online (Sandbox Code Playgroud)
为了更清楚我的问题:要求domReady
或之间有什么区别jQuery
?
从jQuery的API文档的网站为ready
以下所有三种语法都是等效的:
- $(文件).就绪(句柄)
- $().ready(处理程序)(不建议这样做)
- $(句柄)
做完作业后 - 阅读和播放源代码,我不知道为什么
$().ready(handler)
Run Code Online (Sandbox Code Playgroud)
不推荐.第一种和第三种方式完全相同,第三种方法在缓存的jQuery对象上调用ready函数document
:
rootjQuery = jQuery(document);
...
...
// HANDLE: $(function)
// Shortcut for document ready
} else if ( jQuery.isFunction( selector ) ) {
return rootjQuery.ready( selector );
}
Run Code Online (Sandbox Code Playgroud)
但是ready函数没有与所选节点元素的选择器交互,ready
源代码:
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
// Add the callback
readyList.add( fn );
return this;
},
Run Code Online (Sandbox Code Playgroud)
如您所见,它只是将回调添加到内部队列(readyList
)并且不会更改或使用集合中的元素.这使您可以ready
在每个jQuery对象上调用该函数.
喜欢:
$('a').ready(handler)
DEMO$('fdhjhjkdafdsjkjriohfjdnfj').ready(handler) …
我最近遇到了一个问题,我的JavaScript代码并将我的部分代码从我的代码中解决$(document).ready()
并$(window).load()
解决了问题.
现在我明白之后会window.load
被解雇document.ready
,但为什么之后没有准备就绪document.ready
,那之后window.load()
呢?
所以我一直在网上搜索,试图找出这里发生的事情,我无法得到具体的答案.
我在我的网站上有一个$(document).ready,无论内部代码是什么,都会连接多次运行.
我已经阅读了jQuery的bug报告,了解如果你的语句中发生异常,.ready事件将如何触发两次.但即使我有以下代码,它仍会运行两次:
$(document).ready(function() {
try{
console.log('ready');
}
catch(e){
console.log(e);
}
});
Run Code Online (Sandbox Code Playgroud)
在控制台中,我看到的是"准备好"两次记录.是否有可能另外一个有例外的问题会引起问题?我的理解是,所有.ready标签都是相互独立的,但我似乎无法找到它在哪里发挥作用?
这是该网站的主要部分:
<head>
<title>${path.title}</title>
<meta name="Description" content="${path.description}" />
<link href="${cssHost}${path.pathCss}" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="media/js/fancybox/jquery.fancybox.pack.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/landing.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/functions.js" type="text/javascript"><!-- --> </script>
<script src="/media/es/jobsite/js/jobParsing.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="/media/es/jobsite/js/queryNormilization.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.metadata.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.form.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery.i18n.properties-min.js" type="text/javascript" charset="utf-8"><!----></script>
<script type="text/javascript" charset="utf-8">
function updateBannerLink() {
var s4 = location.hash.substring(1);
$("#banner").attr('href','http://INTELATRACKING.ORG/?a=12240&c=29258&s4='+s4+'&s5=^');
} …
Run Code Online (Sandbox Code Playgroud) 我已经看到了ready()方法的一些快捷方式,并想知道哪个实际上先发生,因为我的测试结果让我感到困惑.
$(document).ready(function(){
alert("document ready");
});
$(window).load(function(){
alert("window ready");
});
(function($){
alert("self invoke");
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
这里首先发生自我调用,然后是文档,然后是窗口.是自调用技术被认为是准备()方法?
document-ready ×10
jquery ×10
javascript ×7
angularjs ×2
callback ×2
dom ×2
html ×1
requirejs ×1
shorthand ×1