определение $ (это) в jQuery

Платформа, включенная с VS9 , .NET, но Вы можете тесты записи в C++ / CLI, поэтому, пока Вы - удобное изучение некоторых измов.NET, необходимо быть в состоянии протестировать большую часть любого кода C++.

boost.test и googletest надеются быть довольно подобным, но адаптированный к немного отличающемуся использованию. Оба из них имеют двоичный компонент, таким образом, Вам будет нужен дополнительный проект в Вашем решении скомпилировать и запустить тесты.

платформа, которую мы используем, CxxTest, который намного легче; это - заголовки только и использует сценарий Perl (!) для очистки информации о наборе тестов от заголовков (комплекты наследовались CxxTest:: Основа, имена всех Ваших методов тестирования запускаются с "теста"). Очевидно, это требует, чтобы Вы получили Perl от один источник или другой , который добавляет наверху к Вашей установке среды сборки.

5
задан DA. 27 October 2009 в 22:27
поделиться

4 ответа

1) Используйте консоль в Firebug:

var obj = $(this);
console.log(obj);

2) savePanel () не будет иметь правильный контекст для использования $ (this). Вы можете попробовать:

$(ajaxContainer).find("input.btnSave").click(function(){
    $(this).css("border", "10px solid red");
});
9
ответ дан 18 December 2019 в 13:16
поделиться

"this javascript часто является источником путаницы, поскольку синтаксически выглядит как переменная и, следовательно, подразумевает идею передачи ее. Фактически, this больше похоже на функцию и всегда возвращает текущий контекст выполнения, то есть контекст, для которого была вызвана или применена текущая функция.

Если я не ошибаюсь, jquery пытается выполнить обратный вызов в контексте, в котором было вызвано связывание обратного вызова, то есть

 object1.object2.object3.bindSomeCallback(function() {
        object3 will be "this" in the callback
 })
0
ответ дан 18 December 2019 в 13:16
поделиться

В вашем примере кода вы столкнулись с классической проблемой JavaScript с потерянным контекстом для this , поскольку вызов другой функции из анонимной функции приведет к потерять контекст из анонимной функции ( подробнее об этом здесь ). Когда savePanel вызывается так же, как и вы, this будет ссылаться на объект окна. Вы можете сохранить контекст this из обработчика событий, используя вызов или применив при делегировании метода:

$(ajaxContainer).find("input.btnSave").click(function(){
    savePanel.call(this);
});

// OR

$(ajaxContainer).find("input.btnSave").click(function(){
    savePanel.apply(this, arguments);
});

function savePanel() {
    $(this).css("border","10px solid red");
};
1
ответ дан 18 December 2019 в 13:16
поделиться

Первый вопрос (с использованием Firebug) :

  1. Разместите точку останова где-нибудь в контексте, который вы хотите исследовать (например, внутри savePanel () в вашем примере).
  2. Когда ваше приложение достигает точки останова, добавьте $ (this) на панель наблюдения и разверните ее, чтобы просмотреть ее свойства.
  3. Первым свойством должно быть "0" , что соответствует первому узлу DOM, сопоставленному с объектом jQuery (в данном случае, this ).
  4. Если вы наведете курсор на значение для «0» , Firebug выделит этот узел DOM на странице. Если щелкнуть значение, Firebug переключится на вкладку HTML и прокрутит до этого элемента.

Второй вопрос:

  • Внутри вашей анонимной функции этот будет ссылаться на элемент.
  • Внутри savePanel () , этот будет ссылаться на объект window .

Если вы хотите ] savePanel () , чтобы получить доступ к элементу , есть несколько способов сделать это. Самым простым в вашем случае было бы передать его из анонимной функции:

$(ajaxContainer).find("input.btnSave").click(function(){
  savePanel($(this));
});

function savePanel(inputElement) {
  inputElement.css("border","10px solid red");
}
4
ответ дан 18 December 2019 в 13:16
поделиться
Другие вопросы по тегам:

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