2011-11-28 74 views
0

我写这篇文章的代码:jQuery插件命名空间和迭代

(function($) { 
    $.fn.extend({ 
     videoGallery: function() { 

      this.each(function() { 

       gallery = $(this); // present object in the $.each iteretor 

       $(this).find('a').click(function(e){ 
        e.preventDefault(); 
        alert(gallery.attr('id')); 
       });    


      });          
     } 
    }); 
})(jQuery); 

$('.video-gallery').videoGallery(); 

为什么,当我点击“A”元素,该变种画廊总是具有相同的值,它对应于最后的画廊在$.each iteretor ?

谢谢,我的英语很抱歉,这不是我的自然语言

回答

0

你错过了var关键字,尽量

... 
var gallery = $(this); 

也许这就是问题。

+0

OMG !!几小时试图解决这个问题.. – mauriblint

+0

@mauriblint这是否解决了这个问题?如果是这样,请接受答案:) – Juri

0

这是关闭如何工作。 gallery变量是全局变量(错误?),并且您为每次迭代分配一个新值,因此当触发任何点击事件并且循环完成时,该库就是循环中的最后一个。尝试是这样的:

$(this).find('a').click((function(gallery) { 
    return function(e){ 
    e.preventDefault(); 
    alert(gallery.attr('id')); 
    }; 
}(gallery))); 

您还可以使用var gallery = $(this)把它分配给了环闭合内部的局部变量。 OMG !!

+0

谢谢!现在,它是完美的作品!我可以在这里给业力吗?我在这个论坛上小菜一碟! – mauriblint

+0

只要接受答案,那就够了! – David