jQuery初始化动态加载的内容

时间:2011-11-17 04:52:28

标签: jquery

我在内容页面中有各种部分,可根据用户通过点击事件选择的内容动态替换。我也在可点击项目上使用工具提示插件。根据点击的内容,将动态替换其他可点击的项目。

我已经通过.delegate()解决了点击事件的初始化问题,但我不确定如何为动态内容初始化.tooltip()插件。

代码如下所示:

$(document).ready(function(){

    // This works...
    $("#content").delegate(".etype", "click", function () {
        var elem = $(this);
        var parent_id = $(this).attr('rel').replace("id_", "");
        $.ajax({
            url: '/panel/' + parent_id,
            success: function(data) {
                var obj = $.parseJSON(data);
                for (var key in obj) {
                    $('#'+obj[key]['panel']+'panelwrapper .panelcontainer').html(obj[key]['content']);
                    $('.'+obj[key]['etype']+'_type.etype').removeClass('selected');
                    elem.addClass('selected');
                }
            }
        });     
    });

    // This doesn't work for new AJAX content.
    // Not sure if .delegate() can be used here...
    $(".etype.showtip").tooltip({
        effect: 'fade', 
        position: 'center right',
        opacity: 0.7,
        offset: [3, 0],
    });
});

2 个答案:

答案 0 :(得分:1)

在这里找到解决方案......

tooltip for Ajax-loaded triggers - jQuery live?

$(document).delegate("[title]", "mouseenter", function() {
    if (!$(this).data("tooltip")) {
        $(this).tooltip({position: "top center", offset: [-7, 10]});
        $(this).trigger("mouseenter");
    }   
}); 

答案 1 :(得分:0)

查看live事件

$(".etype.showtip").live("tooltip", function(){
    effect: 'fade', 
    position: 'center right',
    opacity: 0.7,
    offset: [3, 0],
});

编辑。

哦,我很抱歉推荐现场演出。

据我所知,问题是工具提示功能只被调用一次(在window.load上)

尝试在load事件和ajax成功函数上调用该方法。