jquery中this和$(this)的区别?
1.
var content = [
{
"term":"CBDICATION",
"part":"n.",
"definition":"C CCKNOWLEDGE C abdication "
},
{
"term":"CBOUT",
"part":"adv.",
"definition":"The CBOUT CC customers and bills is stored in the other system (such as emp) " + "The CCC can be CBOUT to the FEP directly or through the MidwareServer."
}
];var html = "";
$.each(content,function(){
html += "<div class='entry'>";
html += "<h3 class='term'>" + this["term"] + "</h3>";    //用的是this,而不是$(this)???
html += "<div class='part'>" + this["part"] + "</div>";
html += "<div class='definition'>" + this["definition"] + "</div>";
html += "</div><hr>";
});
在$.each()中的用的this["trem"],而不是$(this)??2.
// var html = ""; //注意这个声明!!
$.get("d.xml",function(data){   
    //"d.xml"是一个xml文件,这里就是加载一个xml文件,并解析其中的内容
    var html = "";  //注意这个声明!!!!
    $(data).find("entry").each(function(){
    var $entry = $(this);  //这里用的是$(this),而不是this????
    html += "<div class='entry'>";
    html += "<h3 class='term'>" + $entry.attr("term") + "</h3>";
    html += "</div>";
    });
    $("#dictionary").html(html); //将hmtl内容填充到id的dictionary的标签下
});
//alert(html);
//$("#dictionary").html(html);关于2的另一个问题:在声明html行: var html="";如果我将此行的声明放在$.get()方法外,alert的内容为空,因此后面的填充也没有内容,按理说,在get方法外面声明的变量在alert的时候应该是有效的,怎么会没有内容了,请高手指点,不胜感激!!注:这两段代码功能上没有问题,只是小弟有这两个疑问,如果不清楚为什么,可能以后会范同样的错误

解决方案 »

  1.   

    this是DOM对象
    $(this)是jQuery对象
    前者不能使用jQuery的方法
    后者不能使用dom的方法但是2者可以转换
    前者套上$()即可
    后者$(this).get(n)即可
      

  2.   

    第二个问题,你在里面声明了一个html那么函数内优先使用的就是你的私有变量,而外面的全局变量并没有赋值
    所以没有呗
      

  3.   


    谢谢第一个问题的解答,
    第二个问题貌似我没说清楚
    我是说我把var html=""的声明移到外面去,.get()方法内就不在声明了,
    然后在.get()方法外调用$("#dictionary").html(html);这个时候html的内容为空
      

  4.   

    因为是异步的啊,你的get请求尚未结束,下面的代码已经执行了,所以你如果没放在callback中,又想代码顺序执行,就要把异步设置为同步
    $.ajaxSetting.async = false;放在get的前面试试看
      

  5.   

    jquery对象转dom对象还可以用$(this)[0]这样转。
    get里面的方法能不能调试啊。
      

  6.   

    哥们儿,“异步”解释得太经典了
    我把$("#dictionary").html(html);放到get()方法内调用就能得到结果,看来的确是异步的原因了
    但是这个$.ajaxSetting.async = false;貌似不对,是不是其他参数?希望仁兄告知
    感谢
      

  7.   

    不好意思,弄混淆了~那是我自己库的东西
    jQuery也有这个属性,只是我忘了可开放出来呢~
      

  8.   

    不能调试是什么意思?
    是说不能alert()吗?