jQuery 插件可由控制台触发,但不能由函数触发 - 为啥会这样?
Posted
技术标签:
【中文标题】jQuery 插件可由控制台触发,但不能由函数触发 - 为啥会这样?【英文标题】: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 的评论:无论如何都要得到它.. ?! 【参考方案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();
);
【讨论】:
以上是关于jQuery 插件可由控制台触发,但不能由函数触发 - 为啥会这样?的主要内容,如果未能解决你的问题,请参考以下文章
由 Datatables 插件和 jQuery 1.11.3 触发的“Uncaught TypeError: Cannot use 'in' operator to search 'length' i