Javascript JQuery嵌套了此引用

Javascript JQuery嵌套了此引用,javascript,jquery,Javascript,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-men

我有一些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"); 
});
我试图从另一个子元素中访问首次单击时的this引用,即,我希望在live()方法的第一个花括号之后获得this引用。但是,我需要从另一个子元素(即我的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)
{
    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"); 
});
$(“#sh区域按钮购物车菜单”).live(“单击”,功能(事件)
{
event.preventDefault();
var=这个;
$(“#sh区域购物车菜单”)。切换(0,函数(){
如果($(this).is(“:可见”)){
$(this).sides(“.sh区域按钮链接菜单内容”).hide();
$(“#sh区域按钮购物车菜单”).parent().removeClass(“当前”);
//需要在此处为$(“#sh区域按钮购物车菜单”)参考(此)

$(that).show();//这是一个淡化的示例,向您展示一般技术

$("#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'));
    });

});

在live回调中,有另一个方法“toggle”。此处的
this
关键字引用ID为$(“#sh zone cart menu”)的特定元素


如果您想访问该引用,只需使用该选择器。

关键是他不想再次选择,因为它已经作为
this
提供。无需做额外的工作。谢谢Juan。这解决了问题。我只使用了var elem=$(this)然后在我需要的地方调用它。干杯。刚进入jQuery,就遇到了类似的问题。这个概念让我省去了很多麻烦。我很震惊这个概念没有得到更多的支持…你只是节省了我一些时间。我不知道JavaScript lambda函数可以捕获这样的局部变量!