Javascript 函数()和$(this)中的每个()值
假设这是我们的功能:Javascript 函数()和$(this)中的每个()值,javascript,jquery,function,this,each,Javascript,Jquery,Function,This,Each,假设这是我们的功能: $('ul li').bind('click', function(){ $('iframe').each(function(){ // who is this??? alert(this); }); }); 如您所见,其中有一个.each()语句使用了$(this) $(this)将引用哪个元素ul li?或iframe?正如你可以猜到的,我正在尝试选择每个iframe(在网页中,与ul li无关,在那里) 我这样问是因为
$('ul li').bind('click', function(){
$('iframe').each(function(){
// who is this???
alert(this);
});
});
如您所见,其中有一个.each()语句使用了$(this)
$(this)
将引用哪个元素<代码>ul li?或iframe
?正如你可以猜到的,我正在尝试选择每个iframe(在网页中,与ul li无关,在那里)
我这样问是因为我用一个更大的函数得到了意想不到的结果,
HTML:
警报输出:
0:foo
1:bar
此
将引用iframe
对象。
以上代码取自jQuery文档
您可能希望告诉我们预期的结果,并可能在此处发布整个代码。它指的是如果您可以从这里检查它
此
指的是最具体的功能范围的对象
$('ul li').bind('click', function(){
// this = [ul li]
$('iframe').each(function(){
// this = [iframe]
});
});
如果要从iframe
内部函数中引用ul li
版本的this
,必须在其周围形成一个闭包,如下所示:
$('ul li').bind('click', function () {
// cache this
var that = this;
$('iframe').each(function () {
// here, this = [iframe] and
// that = [ul li]
});
});
毫无疑问,这将是一个iframe。你能更具体地描述一下“大函数”和这些“意外结果”吗?情况不一样,因为这里的。每个都不在一个function@ToniMichelCaubet是一样的。Kemal提供的链接显示了在
点击处理程序中运行每个的示例,就像你的问题一样。哈哈,这很快就证明了!但看看这个为什么是未定义的?不应该是?哈哈哈,你不知道如何使用标记名检查此项以避免混淆,你可能想使用var that
(或$that
用于jQ)。
$('ul li').bind('click', function(){
// this = [ul li]
$('iframe').each(function(){
// this = [iframe]
});
});
$('ul li').bind('click', function () {
// cache this
var that = this;
$('iframe').each(function () {
// here, this = [iframe] and
// that = [ul li]
});
});