jQuery插件没有应用于$ .ajax动态内容?

Phi*_*hil 3 javascript ajax jquery jquery-plugins

免责声明: 我之前已经在这里问过这类问题,我似乎无法找到它.我试过搜索一堆不同的$.ajax dynamic+ live()类型的东西,但无法找到解决方案,无论如何,这是问题所在.

问题:

我正在构建一个可以保存我的代码片段的站点.我正在从数据库中提取内容$.ajax.这里是网站:InsanelyWeb.com选择框选项内容也是动态的.尝试选项HTML > DOCTYPE > HTML4 Strict(因为这是唯一正在使用的选项.)

如您所见,有一些静态内容可以应用SyntaxHighlighter插件.但是当我按照上面的选择选项,并从数据库中提取数据时,它就会丢失插件.我假设这是因为内容是动态的,我不能应用它的东西.这是我的代码.

jQuery的:

$('#labels').live('change', function() {
    getScripts();
});

$.ajax({
    url: './db_scripts/get_scripts.php',
    success: function( data ) {
        var dataObj = jQuery.parseJSON( data );
        $.each(dataObj, function() {
            $('#code').html( this.code );
        })
        highlighter(); //after success, initiates highlighter 
    },
});

function highlighter() {
    SyntaxHighlighter.all();
}
Run Code Online (Sandbox Code Playgroud)

题:

如何将插件应用于动态内容?我尝试过,async: false但我不认为这是解决方案.非常感谢您的宝贵时间.


解:

在下面解释(非常好):

function highlighter() {
    SyntaxHighlighter.highlight()
}
Run Code Online (Sandbox Code Playgroud)

Ret*_*old 5

据我所知,问题是hightlight函数只被调用一次(在window.load上).

尝试在ajax回调函数中自己调用SyntaxHighlighter.highlight()函数.

更新(详细说明):

SyntaxHighlighter.highlight() 是一个突出显示页面上标记为SyntaxHighlighter源代码的所有元素的函数.

SyntaxHighlighter.all()只需注册window.load事件的highlight()函数.我认为在应用SyntaxHighlighter之前确保加载DOM.

如果您SyntaxHighlighter.all()多次调用,它只会highlight()再次注册该函数.因为您正在执行ajax请求,所以不再触发window.load事件.所以你可以SyntaxHighlighter.highlight()直接打电话.