Небольшая путаница с `this` в функции обратного вызова JavaScript - PullRequest
1 голос
/ 29 апреля 2010
$.ajax({url: path_to_file, cache: false, success: function(html_result){
    $("#window_" + this.id + "_cont_buffer").html(html_result);})

Теперь тогда. Этот вызов функции выполняется в функции класса. this.id является свойством указанного класса. передаст ли это значение функции this.id в строку анонимной функции, или попытается вычислить его при вызове функции, что не имеет смысла.

Если это не сработает так, как я хочу, вы можете порекомендовать, как мне этого добиться.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

В конкретном случае $.ajax(), this может быть указано с помощью атрибута context. Итак, решение Мэтью дает вам this, который указан в функции, из которой вы делаете вызов функции $.ajax.

Вы можете просмотреть документацию jQuery для получения дополнительной информации о настройке this для обратного вызова success.

1 голос
/ 29 апреля 2010

По умолчанию this будет внутренним объектом jQuery. Однако вы можете переопределить это, явно указав context: this как часть вызова. Тогда this будет объектом, с которого вы его вызываете.

$.ajax({url: path_to_file, context: this, cache: false, success: function(html_result){
    $("#window_" + this.id + "_cont_buffer").html(html_result);})

будет делать то, что вы хотите.

...