$(document).ready中的函数是否在全局范围内可用

时间:2015-12-25 10:41:59

标签: javascript jquery

如果我有这样的代码:

  history.pushState(null, null, '/books/add')

是否可以在(文档).ready()之外触发mouseup事件 与

   jQuery(document).ready(function() {
        jQuery('body').on('mouseup', '.some-div', function(e){

      });
    });

或者我应该写这段代码

jQuery('.some-div').mouseup();

作为(document).ready()之外的函数?

5 个答案:

答案 0 :(得分:2)

我不认为依赖关系与整个文件的加载顺序一样重要。 $(document).ready确保jQuery等待执行main函数,直到

  

页面文档对象模型(DOM)已准备好使用JavaScript代码   执行。

在页面实际准备好之前,可以(尝试)运行此就绪块之外的代码。例如,让我们说这是您网页head中的代码:

<script>
   jQuery(document).ready(function() {
        jQuery('body').on('mouseup', '.some-div', function(e){

      });
    });
   jQuery('.some-div').mouseup();
</script>

如上所述,就绪块将等待,但mouseup触发器将尝试触发,但它无法触发。 DOM还没有准备就绪,这意味着.some-div尚未找到 - 因此,触发器无法激活。

为了提高DOM准备就绪的机会,您可以尝试在结束</body>标记之前加载jQuery。就绪块可以保留在head中,但触发器应该移动到文档的末尾,以提高DOM准备就绪的可能性(通常应该在该阶段)。有关script标记放置位置的有趣读物,请参阅this highly popular post

答案 1 :(得分:1)

是的,可以使用

在$ .ready()之外触发mouseup
jQuery('.some-div').mouseup();

但请记住在$ .ready执行后调用它。在实践中,它需要另一个$ .ready处理程序或者最后只需要在同一个中调用。

答案 2 :(得分:1)

的jQuery(&#39;。有些-DIV&#39)。鼠标松开(回调);在文档外部写入此文档并不能确保在将事件附加到文档元素之前文档已准备就绪。在我们尝试访问和附加事件监听器之前,可能会发生jQuery(&#39; .some-div&#39;)。

 jQuery(function() {
       jQuery('body').on('mouseup', '.some-div', function(e){

     });

相当于

   jQuery(document).ready(function() {
    jQuery('body').on('mouseup', '.some-div', function(e){

  });
});

在访问之前,两种方法都可以确保dom元素的可用性。

附加事件后,您可以随时触发。但是你应该始终确保文件准备就绪。

答案 3 :(得分:1)

执行$(function(){ $('#table3').bootstrapTable( {"sortName": "CustomerName","sortOrder":"desc"}); }); 并绑定事件后,您可以在该功能之外调用它。

答案 4 :(得分:0)

试试这个:

$(document).on('mouseup','.some-div',function(){
  //code there
});