0

我需要帮助才能在 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');   
}
4

1 回答 1

0

在内容项视图覆盖中预加载提示会不会更容易(将其添加到 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);

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

于 2013-02-06T08:42:01.030 回答