在ajax中加载脚本和内容

时间:2012-01-25 18:45:51

标签: javascript jquery colorbox

我正在使用jquery load()函数从另一个页面加载一组图像。我希望加载的图像能够触发颜色框脚本,但它不起作用。我在页面上有所有触发加载的脚本,但脚本没有应用于新的ajax内容。我怎么能做这个工作?

更新

感谢您的回复!它现在使用on函数..所以我有这样的东西:

<a href="http://something.com" class="cbox"><img ... /></a>

        $j(".cbox").on( "click", function(){
              $j.fn.colorbox({ iframe:true,  scrolling: false, innerWidth: '650px', innerHeight: '390px' }); 
              return false;
              });

它似乎有点工作..然而现在colorbox无法抓住href,它返回到未定义...但我想这是另一回事。

2 个答案:

答案 0 :(得分:3)

使用jQuery的新.on()方法,该方法取代.live().delegate()。它适用于代码运行后添加到DOM的元素。

如果您发布了一些代码,我会发布一些代码,但基本上它看起来像是

$('imgselect').on('event',function(){
    //do stuff
});

event可以是mouseentermouseleaveclick等。

http://api.jquery.com/on/

答案 1 :(得分:1)

尝试使用requireJS。

这用作脚本加载器,以及用于定义脚本方法用途的库模块控制器。

http://requirejs.org/docs/start.html ----- ------- EDIT

好的,我只读了一半你的问题。尝试使用.delegate()而不是仅绑定到一个元素,因为当通过Javascript加载一个新元素时,无论是在字符串,DOM添加还是AJAX调用中,最初执行的选择器都看不到新元素。 / p>

然而.delegate()可以在观看某个DOM元素进行更改时工作,如果它可能是全局的,我会做这样的事情:

$('body').delegate("a[rel='theTriggerElement']", "click", function () { //Do Trigger Event});

这将监视任何新"a[rel='theTriggerElement']"元素的body元素,并将事件应用于它们。请记住,不要使用.live(),因为它已被弃用。