$ jQuery () .each метод затеняет 'это' ключевое слово

А Amazon Appstore мешает вам использовать Google Analytics? Ну ... не то, чтобы я был удивлен, учитывая, как они хотят делать вид, что Google Play не существует.

В любом случае, Flurry является еще одной популярной аналитической альтернативой для Android. Я использую его для приложений в Amazon Appstore, поэтому я знаю, что у них нет проблем с этим. Он также работает достаточно хорошо, и я никогда не видел смысла переходить на пакет Google Analytics.

Изменить: Ваш вопрос не на 100% понятен (поскольку ссылка просто указывает на Google Analytics), но есть ли проблема, которую вы хотите иметь возможность отслеживать рефералов в приложении / на веб-сайте магазина приложений Amazon?

Это явно другая чашка чая. Но в этом случае мой совет очень прост: отправьте письмо сотрудникам магазина приложений Amazon, объясните, что вы хотите, и спросите их, могут ли они предоставить эту услугу. У магазина приложений Amazon есть некоторые слабые стороны, но одно большое преимущество, которое у них есть, заключается в том, что у них есть реальные люди, желающие общаться и слушать своих разработчиков.

19
задан Jeff Fritz 11 June 2009 в 12:32
поделиться

4 ответа

Думаю, вы могли бы сделать что-то вроде этого:

function MyClass {
     Method1 = function(obj) {
         //do something here
     } 

     Method2 = function () {
          var containingClass = this;
          $(".SomeClass").each(function () {
             containingClass.Method1(this);
           });
        }
    }
}
20
ответ дан 30 November 2019 в 03:34
поделиться

В jQuery 1.3.3 вы сможете вручную установить контекст для обработчиков событий и т. Д.

jQuery Edge: привязать с другим «this»

Между тем , различные методы здесь (псевдоним «this», использование call / apply) - обычная практика. Питер Хиггинс из Dojo также создал плагин jQuery.hitch , который служит той же потребности.

2
ответ дан 30 November 2019 в 03:34
поделиться

From http://docs.jquery.com/Core/each :

Это означает, что каждый раз переданная функция выполняется (которая один раз для каждого сопоставленного элемента) ключевое слово this указывает на конкретный Элемент DOM. Обратите внимание, что "это" не указывают на объект jQuery.

Лично я предпочитаю использовать явные параметры. Таким образом, его будет легче читать:

$('#rotfl').each(function(index, domObject)
{
   var jQueryObject = $(domObject);
   // code
});

Чтобы ответить на ваш вопрос: JavaScript имеет динамическую статическую область видимости. Вы можете сделать следующее:

var that = this;
$('#rotfl').each(function(index, domObject)
{
   var jQueryObject = $(domObject);
   that.DoSomething();
   // code
});
11
ответ дан 30 November 2019 в 03:34
поделиться

То, что вы видите, не является проблемой с jQuery или его методом each () - это то, что некоторые люди считают ошибкой проектирования в JavaScript - вложенная функция должна «наследовать» контекст предыдущей области видимости, поэтому 'this' во вложенной функции должно быть равно 'this' в ее родительской области, если только не вызывается целенаправленно из другого контекста (с помощью apply () или call () ).

Чтобы обойти это, вам нужно присвоить 'this' переменной перед вложенной функцией, чтобы у вас был другой способ ссылаться на нее.

4
ответ дан 30 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: