我认为这是一个真正的新手问题,非常感谢您帮助我学习。我正在按照步骤here实施客户端Google Analytics(分析)实验。
我一直在使用document.ready
$( document ).ready(function() {
// Handler for .ready() called.
});
并且此处的说明对此建议(不带功能):
$(document).ready(
// Execute the chosen view
pageVariations[chosenVariation]
);
我想在实验之外的同一页面上调用其他一些函数,但是当我尝试将它们合并为一个document.ready时,Google Analytics(分析)实验将无法运行。所以我有两个问题:
什么时候不可以在document.ready中包含功能?查看文档here,我从来没有看到它没有功能就写过,所以我对此不太清楚
将
pageVariations[chosenVariation]
添加到现有document.ready的正确方法是什么?我尝试将其添加到我的代码中,如下所示,但该实验仅在其位于自己的单独document.ready中时才有效。 <script>
var chosenVariation = cxApi.chooseVariation();
var pageVariations = [
function() {
console.log('variation one');
},
function() {
document.getElementById('hero').src = 'heroB.jpg';
document.getElementById('oval').src = 'es_03b.jpg';
console.log('variation two');
}
];
$(document).ready(function () {
pageVariations[chosenVariation];
about();
truck();
$("#vid").click(function() {
$.fancybox({
autoSize: false,
inline:true,
height: 456,
width: 700,
href:"#cab"
});
});
});
</script>
最佳答案
什么时候不可以在document.ready中包含功能?看着
这里的文档,我从来没有看到它没有功能
所以不是我不清楚
$(document).ready(function(){
// Something here
});
和
var a = function() {
// Something here
};
$(document).ready(a);
要么
$(function(){
// something here
});
是完全一样的东西。
简而言之,只要第一个参数是一个函数(无论是否引用),就可以通过外部变量加载它。
需要说明的是:在第一种情况下(和第三种情况下),您使用匿名函数,而在第二种情况下,您通过变量引用了函数。
您通过以下方式在自己的情况下正在做什么:
// Wait for the DOM to load, then execute the view for the chosen variation.
$(document).ready(
// Execute the chosen view
pageVariations[chosenVariation]
);
与第二点(具有变量a的点)基本相同,但不是通过变量引用它,而是通过数组引用它。
接下来,大约几秒钟,因为您位于函数内部并且没有引用它,所以应该执行该函数以使其起作用,所以,而不是:
$(document).ready(function(){
pageVariations[chosenVariation];
about();
truck();
$("#vid").click(function() {
$.fancybox({
autoSize: false,
inline:true,
height: 456,
width: 700,
href:"#cab"
});
});
});
更换:
pageVariations[chosenVariation];
带有:
pageVariations[chosenVariation]();
编辑:
正如上面的Ted所指出的,同时进行多个文档就绪调用也很好,因此,如果您遇到麻烦,还可以执行以下操作:
$(document).ready(
// Execute the chosen view
pageVariations[chosenVariation]
);
$(document).ready(function(){
// The rest of your code here
});
关于javascript - 具有/不具有功能的Document.ready,并向现有代码添加数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31030840/