【问题标题】:Joomla - OnMouseover show data from controller in tooltip using Qtip scriptJoomla - OnMouseover 使用 Qtip 脚本在工具提示中显示来自控制器的数据
【发布时间】:2013-02-05 15:43:18
【问题描述】:

我需要帮助才能在 MouseOVer 事件的工具提示(使用 qTip 脚本)中显示数据(来自控制器)。

  1. 用户鼠标悬停在链接上(多个链接,如 foreach)
  2. id 发送到 js 函数,例如 function getData(id){}
  3. 从控制器调用 PHP 函数并使用变量将数据返回到工具提示。
  4. 在工具提示中显示返回数据。

HTML 和 PHP:

foreach ($rows as $row) {
    <a href="#" onmouseover="getData(<?php echo $row->id; ?>)" >Name</a>
}

JS函数:

function getData(id)
{
    var url='index.php?option=com_test&controller=test&task=getDetails&format=raw';
    var data = 'item_id=' + id ;
    var request = new Request({
    url: url,
    method:'post',
    data: data,
    async: true,
    onSuccess: function(responseText)
{ 
    // How i show the "responseText" data here in tooltip using qTip
}
}).send();      
}

控制器功能:

function getDetails()
{
   echo $return = JRequest::getVar('item_id');   
}

【问题讨论】:

    标签: ajax joomla tooltip qtip


    【解决方案1】:

    在内容项视图覆盖中预加载提示会不会更容易(将其添加到 title= 属性),然后添加对 qTip 的调用(每页一个)就可以了。

    此外,ajax 会使工具提示不是很快。

    只要确保你在标题属性中正确地转义 " 或 ' 字符,否则你会破坏你的标记。

    编辑:添加代码。我在这里写这个,所以可能有错别字,但它应该给你的想法:

    foreach ($rows as $row) {
        // let's assume $tip contains the right tip for each row:
        <a href="#" title="<?php echo $tip; ?>" class="tipme">Name</a>
    }
    

    第一部分将显示默认浏览器工具提示。

    现在你必须注入 qTip 脚本:

    $document = JFactory::getDocument();
    $document->addScriptDeclaration('
        jQuery("a.tipme").qTip();
    ');
    

    现在如何将值放入 $tip 中?我看到你有一个 com_test 组件,你不需要通过控制器,但可以直接实例化将提供工具提示的模型;如果它被称为“提示”:

    $tipmodel=JModel::getInstance('tip', 'ComtestModel'); // get the model (once!)
    
    $tip = $tipmodel->getTip($row->id);
    

    这个故事中的所有变量、模型、控制器名称都是虚构的。

    【讨论】:

    • 谢谢 Riccardo,很抱歉,您能举个例子解释一下吗?我还修改了 HTML 和 PHP 代码。请检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多