0

MouseOVerイベントのツールチップ(qTipスクリプトを使用)に(コントローラーからの)データを表示するためのヘルプが必要です。

  1. リンク上のユーザーmouserover(foreachのような複数のリンク)
  2. idは関数getData(id){}のようなjs関数に送信します
  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 への呼び出し (ページごとに 1 つ) を追加するとうまくいきます。

また、ajax を使用すると、ツールチップがあまり速くなりません。

title 属性の " または ' 文字を適切にエスケープしていることを確認してください。そうしないと、マークアップが壊れてしまいます。

編集:コードを追加しました。ここに書いているので、誤字脱字があるかもしれませんが、参考にしてください。

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 に答える