each () внутри функции () и $ (this) - PullRequest
1 голос
/ 07 октября 2011

Допустим, это наша функция:

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

   $('iframe').each(function(){
        // who is this???
        alert(this);
   });

});

Как видите, есть предложение .each (), которое использует $(this) внутри,

Какой элемент будетссылка на $(this) ???ul li?или iframe?Я пытаюсь, как вы можете догадаться, выбрать каждый iframe (на веб-странице нет ничего общего с ul li, там)

Я спрашиваю об этом, потому что получаю неожиданные результаты с гораздо большей функцией,

Ответы [ 3 ]

1 голос
/ 07 октября 2011

Это относится к iframe, вы можете проверить его здесь http://jsfiddle.net/x2XyU/1/

1 голос
/ 07 октября 2011

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]

    });
});
1 голос
/ 07 октября 2011

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: бар

this будет ссылаться на iframe объекты.Приведенный выше код взят из документации jQuery.

Возможно, вы захотите сообщить нам ожидаемые результаты и, возможно, опубликуете весь код здесь.

...