初始化jQuery.load' ed元素

时间:2012-06-25 09:54:53

标签: javascript jquery

我正在使用AJAX加载我的网页的一部分,特别是jQuery.load()。有了这个通常的jQuery模式

$('.classname').click(...) // Handler
// or, working with bootstrap
$("a[rel=tooltip]").tooltip() // Function

或类似的显然不再起作用,因为只有在加载页面时才会调用它们。我意识到第一个例子有jQuery.on,但我如何实现第二个?

是否有一种简单的(内置)方法可以将这些应用于jQuery.load ed的东西,还是我必须自己解决这个问题?这似乎是很多人应该遇到的问题。

1 个答案:

答案 0 :(得分:1)

你必须自己解决这个问题;但您可以通过在$("a[rel=tooltip]").tooltip()

的回调中调用load()来轻松实现此目的
 $('#blah').load('/somewhere.html', function () {
     $('#blah').find('a[rel="tooltip"]').tooltip();
 });

请务必将tooltip()调用仅限于新加载的元素,否则您最终会在每个元素上多次初始化工具提示(可能会导致奇怪的行为)。


为避免重复代码,您只需定义辅助函数;

function initTooltip(root) {
    return $(root || document).find('a[rel="tooltip"]').tooltip();
}

允许您初始化tooltip。该参数是可选的,并允许您将初始化限制为仅提供元素的后代,例如:

jQuery(document).ready(function ($) {
    initTooltip(); // equivilant to initTooltip(document);

    $('#blah').load('/somewhere.html', function () {
        initTooltip('#blah');
    });
});