Jquery 仅当ajax-load()数据包含此内容时才执行此操作

Jquery 仅当ajax-load()数据包含此内容时才执行此操作,jquery,ajax,getscript,Jquery,Ajax,Getscript,我需要将另一个html文件中的内容片段加载到我的index.html中,加载到ID为“#content main”的DIV中。 这是使用jquery load()完成的。 由于我只对类为“.fragment”的DIV进行片段加载,所以我必须单独从html文件加载脚本(使用片段加载时,jQuery不会加载它们) 我通过使用getScript来实现这一点,它可以很好地工作,如下所示: $('#content-main').load(pageName + " .fragment", function(

我需要将另一个html文件中的内容片段加载到我的index.html中,加载到ID为“#content main”的DIV中。 这是使用jquery load()完成的。 由于我只对类为“.fragment”的DIV进行片段加载,所以我必须单独从html文件加载脚本(使用片段加载时,jQuery不会加载它们)

我通过使用getScript来实现这一点,它可以很好地工作,如下所示:

$('#content-main').load(pageName + " .fragment", function() { 
    $.getScript("js/Magic-init.js");            
});
问题是,我不想为我从中加载内容的每个html加载/执行脚本,只想为加载的DIV分配一个特殊类的html加载/执行脚本。 所以我想我可以使用if条件,或者find(),但我无法让它工作

那么我如何添加条件来检查jQuery加载了什么呢

这不起作用:

$('#content-main').load(pageName + " .fragment", function() { 
    if( $('.Magic').length ) {
        $.getScript("js/Magic-init.js");            
    }
});


编辑: 添加原始index.htm和content.htm以显示我的结构

INDEX.htm:

(很抱歉,我无法在这里添加html head,所以只需在脑海中添加doctype、head和body标记。作为脚本,我只需在head中添加jquery-1.11.0.min.js)

试试这个-

$('#content-main').load(pageName + " .fragment", function() { 
    if($($('#content-main').html()).find(".Magic").length  > 0) {
        $.getScript("js/Magic-init.js");            
    }
});
顺便说一句,请确保您的htmls是完美的,因为我已经无数次地使用了这种语法,而且它们都很有效。

这就是诀窍:

if($('#content-main').find(".Magic").length) { 
  $.getScript("init.js");
}

你的意思是,我的版本确实适合你,还是你的版本?当有多个类分配给DIV时会有问题吗?你能在加载html后发布它吗?这有点棘手。该脚本添加了一些div和changes类,因此html看起来不同。但一般来说,它是一个非常直接的div结构,有一些类,就是这样。稍后我会尝试在我的帖子中添加一些内容,比如之前/之后,现在我必须离开电脑几个小时:(无论如何,我想知道,如果脚本被执行,它会出现在哪里?我可以通过加载的html数据的行为和DIV结构的变化来验证,但是当我用firebug检查页面时,我在代码中的任何地方都找不到实现的脚本?!
$('.Magic').find( "span" ).css( "color", "red" );
$('#content-main').load(pageName + " .fragment", function() { 
    if($($('#content-main').html()).find(".Magic").length  > 0) {
        $.getScript("js/Magic-init.js");            
    }
});
if($('#content-main').find(".Magic").length) { 
  $.getScript("init.js");
}