$("#div1").dialog(
{
id:"1",
type:"type1",
args:{w:"100px",h:"50px"},
method:function()
{
//各位大侠,谁能告诉我怎样在这里取到args中的w和h的值,或者说怎样遍历args
}
});

解决方案 »

  1.   

    args是一個物件
    用args.w 和 args.h
      

  2.   

    var o = {w:"100px",h:"50px"};
    for(var i in o)
     alert(i + ":" + o[i]);
      

  3.   

    具体一点啊,
    method:function()
    {
    //在这里根本不认识args,报错的
    }
      

  4.   

    demo:
    var t =  {
    id:'1',
    args:{w:'100px',h:'50px'},
    method:function() {
    alert(this.args.w);
    }
    };
    t.method();
      

  5.   

    $("#div1").dialog(
    {
    id:"1",
    type:"type1",
    args:{w:"100px",h:"50px"},
    method:function()
    {
    //各位大侠,谁能告诉我怎样在这里取到args中的w和h的值,或者说怎样遍历args
    }
    });
    你这个问题开始没看明白,你要在method:function()里面取args的值,
    我感觉你这个args值一定是传到了dialog这个对象里了,就是这个对象可以取到args,但我没有你的实现代码,你可以去看看他的实现,在method:function()就可以类似于this.args["w"]这样的方法取了,
    还有个方法就是你可以把args:{w:"100px",h:"50px"}提到外面,作为全局变量,就都可以引用了,但不建议!
      

  6.   

    var a={args:{w:"100px",h:"50px"}}就是一个对象,其中args可以看做是a的一个属性,而args又是一个对象,其中w、h可以看做是args的属性,所以访问时,可以直接使用a.args.w和a.args.h进行访问,如果要遍历一个对象,可以使用一下方法:
    var a={args:{w:"100px",h:"50px"}}
    function litralObj(obj){
    for(i in obj){
      if((typeof obj[i])==="object"){
        litralObj(i);
     }else{
      alert(obj[i]);
    }
    }
    litralObj(a.args);
      

  7.   

    6楼,7楼,9楼真高人也
    就6楼和7楼说的,this.args..确实能取到数据,可我我想不明白$("#div1").dialog(
    {
    id:"1",
    type:"type1",
    args:{w:"100px",h:"50px"},
    method:function()
    {
    //这里通过this.args确实能取到数据,可是为什么呢?如果说从arguments 中获取很容易理解,
    它是参数,不是this对应的方法中的属性啊? 为什么可以用this取呢?
    }
    });
      

  8.   

    错了,this.args根本取不到
    这里的this是$("#div1")[0]
      

  9.   

    我没说这样能取到,你去看看dialog.js文件,看看他把args存在哪了,你就可以取他的属性了,没代码,只能帮你分析,给不出准确答案,只能猜!
      

  10.   

    多谢张少龙大哥,分析jquery ui源码太痛苦了,越分析脑子越糊,放弃了
    看来在一个匿名的{a:function(){}}中要想取外面的东西是没辙了,只有把作用域方大一点,在外面声明。
      

  11.   

    不谢,呵呵。一起学习!
    try
    $("#div1").dialog(
    oo={
    id:"1",
    type:"type1",
    args:{w:"100px",h:"50px"},
    method:function()
    {
     oo.args
    // 这里通过this.args确实能取到数据,可是为什么呢?如果说从arguments 中获取很容易理解,
    它是参数,不是this对应的方法中的属性啊? 为什么可以用this取呢?
    }
    });