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’)的特定元素。
如果要访问该引用,只需使用该选择器即可。