私は素晴らしいcluetipプラグインを使用しています。私はAjaxを使用してプラグインにデータを入力していますが、ajaxコールバックからタイトルを設定する方法について(ドキュメントまたは例では)どこにもできません。
cluetipでajaxからのタイトルの更新はサポートされていますか?
更新注:
したがって、以下の提案は、タイトルを作成できるという意味で機能しますが、この場合、閉じるボタンはタイトルに表示されません。下の画像を参照してください。
私は素晴らしいcluetipプラグインを使用しています。私はAjaxを使用してプラグインにデータを入力していますが、ajaxコールバックからタイトルを設定する方法について(ドキュメントまたは例では)どこにもできません。
cluetipでajaxからのタイトルの更新はサポートされていますか?
したがって、以下の提案は、タイトルを作成できるという意味で機能しますが、この場合、閉じるボタンはタイトルに表示されません。下の画像を参照してください。
実は、単純な角度から見ればかなり簡単です。
最初に注意することは、ドキュメント内のすべての手がかりは、すべてのヒントを表示するために1つのマークアップレイアウトのみを使用することです。新しい手がかりがトリガーされるたびに、マークアップレイアウトが更新されて表示されるだけです。
これにはデモを使用しました。したがって、マークアップは次のとおりです。
注:複数の手がかりを持つケースをシミュレートするために、2つの手がかりを使用しています
<a class="title" title="hello" href="http://plugins.learningjquery.com/cluetip/demo/ajax3.html" rel="http://plugins.learningjquery.com/cluetip/demo/ajax3.html">This example</a>
<a class="basic" href="http://plugins.learningjquery.com/cluetip/demo/ajax.html" rel="http://plugins.learningjquery.com/cluetip/demo/ajax.html">Basic</a>
正しく整列するように、スタイルに小さな変更を加えましょう
.cluetip-close { float: right; margin-top: -40px; }
さて、私たちのスクリプト、両方の手がかりのヒント。
var title;
$('a.title').cluetip({
closePosition: 'top',
sticky: true,
closeText: '<img src="http://plugins.learningjquery.com/cluetip/demo/cross.png" alt="close" width="16" height="16" />Close',
ajaxCache: false,
ajaxSettings: {
success: function(data) {
title = "Your new Title";
$(this).attr("title", title); //just set the title for consistency
}
},
onShow : function(ct,c) {
$(".cluetip-title").text(title); //update the title class with the title
}
});
$('a.basic').cluetip(); //While definning another tip, it is NOT affected by previous one
フィドルはそれを表示しないかもしれませんが。私はそれをテストしました、そしてそれは働きます。
Cluetipは、最初に作成されたときにタイトルをキャッシュします。そのため、onShowオプションで変更する必要があります。ajaxProcessステップで変更しようとすると、変更が上書きされます。
ただし、ajax設定オプションを使用して、必要なタイトルを取得し、そのタイトルを変数に格納することができます。
cluetipはデフォルトでajaxの結果をキャッシュすることに注意してください。これを変更するには、ajaxCache:falseを設定できます。
これがいくつかのサンプルコードです
var title;
$('a.clue').cluetip({
ajaxSettings: {
success: function(data) {
// GET Title here
title = 'new title';
}
},
ajaxCache: false,
onShow : function(ct,c) {
$("#cluetip-title").text(title);
}
});
ajaxProcessオプションを使用することもできますが、スクリプトタグとスタイルタグが確実に削除されるように、そのオプションのデフォルトを呼び出していることを確認する必要があります。
あなたはこのようなことをすることができます:
$('a.basic').cluetip({
ajaxProcess: function(data) {
// Suppose the data come with the following structure:
data = { title: "Another title", body: "Blah blah blah blah" };
$(this).attr("title", data.title);
return data.body;
},
onShow: function(ct, c) {
ct.find(".cluetip-title").text(
$(this).attr("title")
);
}
});
ここで実際の動作を確認してください:http://jsfiddle.net/A9EQ5/20/
$('a.basic').cluetip({
sticky: true,
closePosition: 'title',
ajaxCache: false,
ajaxProcess: function(data) {
data = {title: "AjaxTitleGoesHere", body:"AjaxBodyGoesHere"};
$(this).attr("title", data.title);
return data.body;
},
onShow: function(ct, c) {
ct.find(".cluetip-title").append(
$(this).attr("title")
);
}
});
タイトルはいつでも非表示にして、ajax応答を使用してシミュレートできます。