我正在使用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,它返回到未定义...但我想这是另一回事。
答案 0 :(得分:3)
使用jQuery的新.on()
方法,该方法取代.live()
和.delegate()
。它适用于代码运行后添加到DOM的元素。
如果您发布了一些代码,我会发布一些代码,但基本上它看起来像是
$('imgselect').on('event',function(){
//do stuff
});
event
可以是mouseenter
,mouseleave
,click
等。
答案 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()
,因为它已被弃用。