开发者

How do I reference the outer "$(this)" in jquery?

开发者 https://www.devze.com 2023-04-06 12:59 出处:网络
Let\'s say I have code like this: $(\'.myClass\').each(function(){ $(\'#\' + $(this).attr(\'id\') + \"_Suffix\").livequery(\'click\', function(){

Let's say I have code like this:

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

The $(this) that I pass to the doSomething function is what's in the second jquery parenthesis - $('#' + $(this).attr('id') + "_Suffix"). How do I reference what's in the first parenthesis - what the original this referred to? ( $('.myClass').each )

I assume I could save it into a variable, and then use that variable:

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

But is there any way to reference it without doing this?


You need to put it in a separate variable:

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

Also, livequery is deprecated; you should use live instead.


Just save the scope in local variable:

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


Try to use local variable

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

精彩评论

暂无评论...
验证码 换一张
取 消