如何在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)); }); });