2012-06-25 55 views
3

我知道这是一个相当普遍的问题,但即使有研究,我也无法理解我在调用document.ready()Javascript函数时出了什么问题。jQuery和document.ready()发射两次

出于某种原因,即使我没有执行任何其他警告,它也会被调用两次。

正如我在标题中所说的,我使用jQuery,并且认为某些东西可能来自$(function(){}),所以我也删除了其中的任何执行。没有任何变化,document.ready()仍然被调用两次。

这个问题的根源是什么?如何解决/解决它?

在此先感谢!

这里是我试过的代码:

$(function(){ 
    //$("#tabs").tabs(); 
}); 

$(document).ready(function() { 
    //getTableEntity("organisation", "getentitytable", "#testtable"); 
    //standardDataTable('#tableOrga'); 
    alert("document.ready"); 
}); 

编辑:我知道我使用的是同样的功能的两倍。将所有内容放在一个函数中并不能解决问题。

+4

向我们展示一些代码bruv? –

+2

发布您尝试的代码。和'document.ready()'应该'$(document).ready()' – thecodeparadox

+0

发布更新,代码集。 –

回答

6

您是否使用模板引擎如smarty或.net或其他?这可能是有一个双jQuery的脚本源。然后有副作用。

+0

我正在使用树枝。我会研究一下,谢谢 –

+0

我正在调用我的Twig的{%block javascripts%}中的JavaScript,可能会调用它两次。当放在身体里时,它现在只会发射一次。谢谢! –

+0

这个答案保存了我的屁股 – TheWandererr

1

应该使用其中之一...并把你的代码以下的jQuery的功能之一

$(function(){ 
    //$("#tabs").tabs(); 
}); 

OR

$(document).ready(function() { 
    //getTableEntity("organisation", "getentitytable", "#testtable"); 
    //standardDataTable('#tableOrga'); 
    alert("document.ready"); 
}); 

$(function(){等于$(document.ready)

这里阅读jquery

3

您可以检查是否th这个代码已经准备好了。将代码放置在您的JavaScript源文件中。

// If the DOM is already ready 
if (jQuery.isReady) { 
// Execute the function immediately 
fn.call(document, jQuery); 
} // ... 
+0

这没有改变,这意味着jQuery从一开始就准备好了。 –

0

我觉得这个演示将帮助您

<script> 
    $(function(){ 
     $('#test1').appendTo('#test2'); 
     console.log(1); 
    }) 
</script> 
<div id="test1"> 
<script> 
    $(function(){ 
     console.log(2);  
    }); 
</script> 
</div> 

<div id="test2"></div> 

的执行console.log(2)将触发两次。

+0

你猜猜吗?...喜欢看一个演示,因为它不会两次触发 – charlietfl