私は次のように JavaScript で Twitter Bootstrap ツールチップを使用しています。
$('a[rel=tooltip]').tooltip();
私のマークアップは次のようになります:
<a rel="tooltip" title="Not implemented" class="btn"><i class="icon-file"></i></a>
これは問題なく動作しますが、要素を動的に追加し、それらの動的要素のツールチップが表示されません。これは、ドキュメントが通常の jQuery機能<a>
でロードされたときに .tooltip() を 1 回だけバインドしているためだとわかっています。$(document).ready(function()
これを動的に作成された要素にバインドするにはどうすればよいでしょうか。通常は、jquery live() メソッドを使用してこれを実行します。ただし、バインドに使用するイベントとは何でしょうか。bootstrap .tooltip() を jquery .live() に接続する方法がわかりません。
これを機能させる 1 つの方法は、次のようになります。
/* Add new 'rows' when plus sign is clicked */
$("a.add").live('click', function () {
var clicked_li = $(this).parent('li');
var clone = clicked_li.clone();
clone.find(':input').each(function() {
$(this).val('');
});
clicked_li.after(clone);
$('a[rel=tooltip]').tooltip();
});
これは機能しますが、ちょっとハックっぽいようです。また、$(ready) 呼び出しでまったく同じ .tooltip() 行を呼び出しています。それで、ページが最初に読み込まれたときに存在し、そのセレクタに一致する要素は、ツールチップで 2 回表示されることになりますか?
このアプローチに問題はないと思います。私は単にベストプラクティスや動作の理解を求めているだけです。
ベストアンサー1
これを試してみてください:
$('body').tooltip({
selector: '[rel=tooltip]'
});