each()里面的函数()和$(this)

时间:2011-10-07 10:55:15

标签: 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无关,那里)

我问这个是因为我用一个更大的函数得到意想不到的结果,

3 个答案:

答案 0 :(得分:1)

http://api.jquery.com/each/

HTML:

<ul>
    <li>foo</li>
    <li>bar</li>
  </ul>

使用Javascript:

   $('li').each(function(index) {
        alert(index + ': ' + $(this).text());
      });

警报输出:

0:foo

1:bar

this将引用iframe个对象。 上面的代码来自jQuery文档。

您可能想告诉我们预期的结果,并在此处发布整个代码。

答案 1 :(得分:1)

它指的是iframe你可以从这里http://jsfiddle.net/x2XyU/1/

检查它

答案 2 :(得分:1)

this指的是最具体的函数范围的对象。

$('ul li').bind('click', function(){

    // this = [ul li]

    $('iframe').each(function(){

        // this = [iframe]

    });
});

如果要从ul li内部函数中引用this版本的iframe,则必须在其周围形成一个闭包,如下所示:

$('ul li').bind('click', function () {
    // cache this
    var that = this;

    $('iframe').each(function () {

        // here, this = [iframe] and
        //       that = [ul li]

    });
});