【问题标题】:jQuery Plugins triggerable by Console, but not by function - why that?jQuery 插件可由控制台触发,但不能由函数触发 - 为什么会这样?
【发布时间】:2012-07-17 17:31:30
【问题描述】:

我有一个神秘的 JS 问题:我用一个函数激活不同的 jQuery 插件。它是这样称呼的:

<script>
postAjaxCalls();
</script>

那么,对应的函数是这样的:

function postAjaxCalls() {
    jQuery("[title]").tooltip(); 
    alert("this works great, tooltip not!");
    jQuery("select").selectbox();
} 

当我重新加载页面时,除了工具提示插件之外一切正常。现在,如果我在 JS 控制台中触发完全相同的代码,插件就会被激活:

jQuery("[title]").tooltip(); 

为什么?为什么通过控制台激活时可以工作,而通过函数激活时不能工作?

干杯!

【问题讨论】:

  • 尝试将其放入文档中。准备就绪
  • 查看对 codeparadox 的评论:无论如何都要得到它.. ?!

标签: javascript jquery activation


【解决方案1】:

$(document).ready(function() { .. }) 中尝试您的代码,简称$(function() { .. }),以便在 DOM 准备好后执行您的代码。

jQuery(document).ready(function() {

  function postAjaxCalls() {
    jQuery("[title]").tooltip(); 
    alert("this works great, tooltip not!");
    jQuery("select").selectbox();
  } 
  postAjaxCalls();

});

简而言之或

jQuery(function() {

  function postAjaxCalls() {
    jQuery("[title]").tooltip(); 
    alert("this works great, tooltip not!");
    jQuery("select").selectbox();
  } 
  postAjaxCalls();

});

【讨论】:

  • 这很矛盾:我在另一个项目中也遇到了这个问题。我使用了您的建议(jQuery(function() {..})),但在我执行 $('.datepicker').datepicker(); 之前它仍然不起作用在控制台中!?
【解决方案2】:

您可能在 DOM 准备好之前调用了postAjaxCalls。当你从控制台调用它时,DOM 就准备好了,所以它可以工作了。

试试这个:

$(function(){
    postAjaxCalls();
});

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多