首先这个东西的意思是立即执行函数吗?
发现很多插件都是用这种方式写的我现在遇到的问题是:
图片插件(function(){。})()
我在document.ready里要操作$('#abc').html(str);其中图片插件里会操作str产生渐变等效果但插件会先执行,document.ready会后执行,从而影响到了效果出现的时间。。
所以我想把document.ready改成(function(){})()方式。。
但这样好像会有不良后果?找资料说(function(){})()这种方式执行时,如果DOM还不存在会出错?
大家帮忙看看,谢谢

解决方案 »

  1.   

    (function(){
    //ZYL命名空间
    if(!window.ZYL){window['ZYL'] = {};//命名空间定义
    }function page_change(framenum,framehref){
    parent.frames[framenum].document.location = framehref;
    };
    window['ZYL']['page_change'] = page_change;})();上面的这个定义在调用的时候,可以ZYL.page_change("参数1","参数2");
    这样可以自己写个函数放在里面,把关键的图片名称,地址什么的实际需要的以参数的形式进行传递,这样可以在document.ready里要操作$('#abc').html(str);这个操作之后加上ZYL.page_change("参数1","参数2");这样是否可以达到你想要的结果呢?
      

  2.   

    首先那是匿名函数立即执行的写法
    其次之所以用document.ready 是因为里面的方法用到了页面的元素,需要等页面文档结构加载好了才去操作,否则会得不到对应的元素。
    既然是插件而且是立即执行 里面怎么会操作到你的页面元素了呢 里面应该是应该是添加一些事件或者监听什么的
      

  3.   

    嗯,是的。元素还没出来,但监听,事件先触发了,要等下一次触发,看起来效果不好
    (function($) {})(jQuery);这个有什么不同。
    在(function(){})()里直接操作BODY里面最上面的元素$(".test").html 会不会出问题。
      

  4.   

    给你的图片插件写好传参的方法。在document.ready里把str或者说$(".test").html作为参数传给它的方法去执行效果,不就得了?至于说“很多插件都是用这种方式写”,不要只看其表,不知其里,把相关的技术概念弄清楚,知道别人为什么用,才能知道自己是否该用和如何用。
      

  5.   

    (function(){
        //这里面所有自定义的操作均在当前页面DOM加载完成后执行
         //也就是说,你想让某个局部执行什么效果,先必须保证其DOM结构的存在以及完整性
        $('#abc').html(str);//你可以先填充你的数据
        //在后面再调用图片插件
         
    })()
      

  6.   

    补充:或者你可以将绑定对象交给window,自己考虑如何结合使用吧;5楼的朋友说得对极了,你至少要了解最基本的机制
    $(window).load(function() {    //这里面所有自定义的操作均在当前页面中所有元素加载完成后执行})