【问题标题】:Apply qtip(jQuery plugin) to newly loaded items on page将 qtip(jQuery 插件)应用于页面上新加载的项目
【发布时间】:2012-07-14 01:07:22
【问题描述】:

首先,这是 qtip,一个 jQuery 插件:http://craigsworks.com/projects/qtip2/ 基本上它可以制作漂亮的工具提示。

我在 mysql 数据库结果页面上使用 qtip,当我第一次加载页面时,qtip 工作得很好。但是,我的页面上有排序链接,导致 div 内的信息完全改变(使用 AJAX 将新信息放入 div,方法是创建一个新的 mysql 查询来处理数据并将其放入表中以替换表这页纸)。当我单击排序按钮时,除了 qtips 消失之外,一切正常。我在图像标题(“标题”)上使用 qtips,所以当我翻转排序表上的图像时,它会回到正常的工具提示。

我认为错误在于 $(document).ready 意味着 qtip 内容只会在第一页加载时加载,因此当我更改表格时,所有 qtip 都会消失。我在 qtip 论坛上发现了一个似乎与我的问题有关的主题 (http://craigsworks.com/projects/forums/thread-solved-reload-qtip-with-new-items),我尝试了该主题中的所有内容,而且我使用的是最新版本的 qtip,所以我使用 on() 而不是 live() 因为live() 已弃用。它仍然没有解决它。代码如下:

<script type="text/javascript">
jQuery(document).ready(function() {
    $('img[title]').on('mouseover', function() { 
        if( typeof( $(this).data('qtip') ) == 'object' ){ return; }
        $(this).qtip({
            content: {
                text: false
            },
            style: 'cream',
            position: {
                viewport: $(window)
            }
        });
        $(this).qtip('show');
    });
});
</script>

【问题讨论】:

  • 您是否正在回发以对 sql 结果进行排序?因此再次解雇document.ready?如果不是,您可能必须在排序后再次分配“this.qtip”
  • 我从未听说过回发,但我会调查一下。
  • 显示排序结果的代码
  • 我尝试用谷歌搜索“mysql postback”,但没有得到任何结果。我猜它不存在于 mysql 或者不是很容易做到。这几乎是我用于排序的代码:w3schools.com/php/php_ajax_database.asp

标签: jquery mysql ajax plugins qtip


【解决方案1】:

通过存储 qTip 设置,在加载新内容后,可以很容易地(重新)使用相同的设置初始化 qTip。

如果没有完全了解您的 javascript,我无法具体说明,但应该这样做:

jQuery(document).ready(function() {
    var qtipOptions = {
        content: { text: false },
        style: 'cream',
        position: { viewport: $(window) }
    };

    $('img[title]').qTip(qtipOptions);

    $("#myButton").on('click', function(){
        $.ajax({
            //...
            //...
            //...
            success(function(html){
                $("#mySelector").html(html);
                $('img[title]').qtip('destroy').qtip(qtipOptions);
            })
        });
    });
});

【讨论】:

  • 我不确定如何将我的代码放入您的代码中。我没有在 qtip 中使用 ajax,而是使用这个:w3schools.com/php/php_ajax_database.asp 所以当我点击排序链接时,它会调用另一个页面来查询数据库并创建一个表来替换这页纸。我试着把 在被调用的页面末尾,不起作用。但也许我没有正确编写代码;我是 jQuery 的新手。
  • w3schools 参考资料向您展示了如何进行原始 AJAX,但在页面上使用 jQuery 则不使用其 AJAX 功能是愚蠢的。学习jQuery.ajax()(和各种捷径方法)将是现在和将来提高生产力的一项巨大投资。通读the documentation,然后返回我建议的代码。您会看到它不是“qtip 中的 ajax”而是“ajax 中的 qtip”——更完整地说,AJAX 成功处理程序中出现了 .qtip(...) 语句。
  • 我阅读了该文档并将我的代码转换为 jQuery AJAX,它终于可以工作了! :) 谢谢。你是对的,这在未来肯定是非常有用的。
猜你喜欢
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多