我正在使用带有JavaScript的Twitter引导工具提示,如下所示:
$('a[rel=tooltip]').tooltip();
我的标记如下所示:
<a rel="tooltip" title="Not implemented" class="btn"><i class="icon-file"></i></a>
效果很好,但是我<a>
动态添加了元素,而那些动态元素没有显示工具提示。我知道这是因为在完成典型的jquery $(document).ready(function()
功能的文档加载后,我只绑定一次.tooltip()。
如何将其绑定到动态创建的元素?通常我会通过jquery live()方法来做到这一点。但是,我用来绑定的事件是什么?我只是不确定如何将bootstrap .tooltip()与jquery .live()挂钩。
我发现一种使这项工作可行的方法是这样的:
/* 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()行。那么,页面首次加载并与该选择器匹配时存在的元素是否以工具提示两次结束?
我认为这种方法没有任何问题。我只是在寻找最佳实践或对行为的理解。
rel
属性的方式很糟糕。这是非语义的,起源于十多年前。如今,追溯到几年前的每个浏览器都支持data-*
属性,没有更多的理由不使用它们。