这个有什么区别。宽度和带有fancybox的$(this).width

时间:2014-07-03 02:22:28

标签: jquery fancybox

我对这个和$(这个)的用法有点困惑。

我们来看下面的例子:

$('a.thmb')click( function() {
  var img_url = $("img",this).attr("src");
  $("#preview_img").attr( "src", img_url);
  $("#preview_img").load( function(){
    var pwidth = this.width;
    var pheight = this.height;
    //alert( $(this).width() ); // 0 <-- (1-1)
    //alert( this.width );     //720 <-- (1-2)
     $.fancybox({
         ....
         onStart: function(){
            //alert( $("#preview_img").width() ); // 0 <-- (2)
         },
         onComplete: function(){
            //alert( $("#preview_img").width() ); //720 <-- (3)
         }
     });
     //alert( $(this).width() ); //720 <-- (4)
  });
}
  1. (1)之间有什么区别?
  2. (2)和(3)之间有什么区别?

  3. 我想知道问题2。 差异(1-1)和(4)的原因?只是时间?

2 个答案:

答案 0 :(得分:2)

this是一个变量,它包含对id为&#34; preview_img&#34;的图像元素的引用。

this作为参数传递给jQuery($(this))会创建一个包含该元素的jQuery集合。

图片元素的width属性(this.width)为您提供了图片代码的width属性。

jQuery width()方法为您提供了集合中第一个元素的计算宽度。

答案 1 :(得分:1)

这肯定是重复的,但要点是后者$(this)是调用jQuery对象的“width”方法的JQuery对象,而前者只是对DOM元素的引用而你是获取该元素的width属性。