【问题标题】:Twitter Bootstrap Tooltip (PHP) not working in WordpressTwitter Bootstrap 工具提示 (PHP) 在 Wordpress 中不起作用
【发布时间】:2012-06-14 10:25:47
【问题描述】:

我正在尝试使用 Twitter Bootstrap 弹出框/工具提示,但我在控制台中收到以下错误:

Uncaught TypeError: Object #<Object> has no method 'popover'

我的函数文件中有以下内容来包含这些文件,这些文件可以在源代码中看到并在单击时指向正确的脚本:

add_action('wp_enqueue_scripts','dcr_enqueue_scripts');

if(!function_exists('dcr_enqueue_scripts')):
function dcr_enqueue_scripts(){

    wp_register_script('tooltip',get_template_directory_uri().'/js/bs-tooltip.js','jquery');
    wp_register_script('popover',get_template_directory_uri().'/js/bs-popover.js',array('jquery','tooltip'),'1.0');
    wp_enqueue_script('tooltip');
    wp_enqueue_script('popover');

}
endif; 

以下元素期待弹出框:

<th><span>Description:</span><img class="popoverthis" src="<?php bloginfo('template_url')?>/images/info.png" data-content="This is the content" title="Title"></th>

而页面中包含的调用popover函数的jQuery是这样的:

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery('.popoverthis').popover({
        placement: "bottom"
    });
});

对于解决此问题的任何想法将不胜感激。

【问题讨论】:

  • 您能否发布您网站的演示并指出问题区域的位置?您的设置应该可以工作。您是否包含工具提示所需的 CSS?

标签: php jquery wordpress twitter-bootstrap tooltip


【解决方案1】:

我看不到任何对 $.noConflict(); 的调用

http://api.jquery.com/jQuery.noConflict/

在站点关闭之前,我从控制台尝试了 jQuery('.popoverthis').hide(),结果相同。

【讨论】:

  • 网站没有宕机,只是间歇性慢了一点!之前没用过noConflict,是在外部js文件中调用还是从页面调用?
  • api.jquery.com/jQuery.noConflict中的例子,解释得很好。
  • 我已尝试将其添加到代码中,但仍然显示相同的错误。我认为我做得对!
  • @ElliotReeve 你做对了。并且 .hide() 正在工作。我只是想知道你是否可以在类而不是 id 上弹出。
  • 我在另一个网站上使用了相同的工具提示,并没有遇到任何问题。
【解决方案2】:

需要检查的几件事:

  • 页面加载顺序 - 您的弹出框是否在 jquery 或 jquery.popover.js 插件被调用之前执行?

如果这是问题,您将不得不提高/降低 enque 脚本的优先级,如下所示:

add_action('wp_enqueue_scripts','dcr_enqueue_scripts', **5**); // default is 10

  • 您是否有正确的 jQuery 版本(wordpress 捆绑了一个,有时它可能比外部脚本所需的版本旧)?

  • 打开 firebug/web 检查器并手动运行:
    jQuery('.popoverthis').popover({ placement: "bottom" });

看看哪里出了问题

更新:还有一些可能出错的地方(这里列出了如何解决您的问题):

  • 您在网站上包含了两个 jQuery(可能由另一个插件提供)- 1.4.2 出现在 1.7.2 之后并破坏了基本的引导 javascript。
  • 您缺少此插件所需的 Bootstrap CSS 信息。它确实有效,但它会在网站底部显示工具提示信息,因为没有 CSS 来使它看起来更漂亮。

解决方案:使用一个独立的 popovover 插件,像这样一个来自 crowdfavorite 的插件: https://github.com/crowdfavorite/jquery-popover 并且还包括它的 CSS 文件。

(您也可以引入 bootstrap 的 CSS,但它可能会破坏您的网站 CSS

【讨论】:

  • 感谢您的回复,脚本以正确的顺序加载,如页面源代码所示。使用的 jQuery 版本是 1.7.2,这是最新版本。当我手动运行代码时,我得到同样的错误: TypeError: Object # has no method 'popover' 我尝试了许多不同的工具提示插件,并且都给出了相同的结果 Object has no method...
  • 有机会给我网址吗?
  • 我现在在主页底部添加了“测试”一词:discoversolar.co.uk 您将在控制台中看到错误。
  • 两件事: - 引导插件包装window.jQuery,在您的用户空间中不存在。尝试将其更改为 (jQuery) - 您使用的 jquery 1.4.2 对于 boostrap 来说可能太旧了(注意!所有 javascript 插件都需要最新版本的 jQuery。)
  • 我已经更新了帖子来解释您的问题的核心以及如何解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 2021-10-31
  • 2012-04-14
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
相关资源
最近更新 更多