JQuery嵌套了这个引用

我有一些JQuery代码如下:

$("#sh-zone-button-cart-menu").live("click", function(event) { event.preventDefault(); $("#sh-zone-cart-menu").toggle(0, function(){ if($(this).is(":visible")){ $(this).siblings(".sh-zone-button-link-menu-content").hide(); $("#sh-zone-button-cart-menu").parent().removeClass("current"); //need to reference (this) for $("#sh-zone-button-cart-menu") here } }); $("#sh-zone-button-cart-menu").parent().toggleClass("current"); }); 

我试图从另一个子元素中访问我的初始点击的这个引用,即我想得到这个在我的live()方法的第一个大括号之后可用的引用。 但是,我需要从另一个子元素中访问它,即在我的toggle()方法中。

我怎样才能做到这一点?

谢谢。

将其保存为局部变量:

 $("#sh-zone-button-cart-menu").live("click", function(event) { // This line saves the current 'this' as a local variable // that can be accessed by inner functions var thisInClick = this; event.preventDefault(); $("#sh-zone-cart-menu").toggle(0, function(){ if($(this).is(":visible")){ $(this).siblings(".sh-zone-button-link-menu-content").hide(); $("#sh-zone-button-cart-menu").parent().removeClass("current"); //need to reference (this) for $("#sh-zone-button-cart-menu") here $(thisInClick).doSomething(); } }); $("#sh-zone-button-cart-menu").parent().toggleClass("current"); }); 

这是一个淡化的样本,向您展示一般技术。

 $("#sh-zone-button-cart-menu").live("click", function(event) { var that = this; $("#sh-zone-cart-menu").toggle(0, function(){ alert($(that).attr('id')); alert($(this).attr('id')); }); }); 

您可以在变量中保存this的引用,以便稍后使用它。

 $("#sh-zone-button-cart-menu").live("click", function(event) { event.preventDefault(); var that = this; $("#sh-zone-cart-menu").toggle(0, function(){ if($(this).is(":visible")){ $(this).siblings(".sh-zone-button-link-menu-content").hide(); $("#sh-zone-button-cart-menu").parent().removeClass("current"); //need to reference (this) for $("#sh-zone-button-cart-menu") here $(that).show(); // <= "that" is sh-zone-button-cart-menu } }); $("#sh-zone-button-cart-menu").parent().toggleClass("current"); }); 

在实时回调中,您有另一种方法’切换’。 这里的this关键字是指ID为$(’#sh-zone-cart-menu’)的特定元素。

如果要访问该引用,只需使用该选择器即可。