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

假设我有这样的代码:

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

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

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

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

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

你需要将它放在一个单独的变量中:

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

另外,不推荐使用livequery ; 你应该用live来代替。

只需将范围保存在局部变量中:

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

尝试使用局部变量

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