如何在jquery中引用外部的“$(this)”?

时间:2011-09-22 13:33:52

标签: jquery this

假设我有这样的代码:

$('.myClass').each(function(){
    $('#' + $(this).attr('id') + "_Suffix").livequery('click', function(){
        doSomething($(this));
    });
});

我传递给$(this)函数的doSomething第二个 jquery括号中的内容 - $('#' + $(this).attr('id') + "_Suffix")。我如何引用第一个括号中的内容 - 这引用的原始内容是什么? ($('.myClass').each

我假设我可以将其保存到变量中,然后使用该变量:

$('.myClass').each(function(){
    outerThis = $(this);
    $('#' + $(this).attr('id') + "_Suffix").livequery('click', function(){
        doSomething($(outerThis));
    });
});

但有没有办法在不这样做的情况下引用它?

3 个答案:

答案 0 :(得分:7)

您需要将其放在一个单独的变量中:

$('.myClass').each(function(){
    var outer = $(this);
    $('#' + $(this).attr('id') + "_Suffix").livequery('click', function(){
        doSomething(outer);
    });
});

此外,livequery已弃用;你应该使用live代替。

答案 1 :(得分:1)

只需将范围保存在本地变量中:

$('.myClass').each(function(){
    var self = $(this);
    $('#' + $(this).attr('id') + "_Suffix").livequery('click', function(){
        doSomething($(this));
    });
});

答案 2 :(得分:0)

尝试使用局部变量

 $('.myClass').each(function(){
    var myclassObj = $(this);
        $('#' + myclassObj.attr('id') + "_Suffix").livequery('click', function(){
            doSomething($(this));
        });
    });