2010-04-29 4 views
1
$.ajax({url: path_to_file, cache: false, success: function(html_result){ 
    $("#window_" + this.id + "_cont_buffer").html(html_result);}) 

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

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

ответ

2

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

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

+0

Ой, я не заметил, что добавил «context: this». Таким образом, это в основном заставляет 'this' в функции обратного вызова быть' this', который является моим экземпляром, создающим запрос AJAX. умный материал это. – thecoshman

1

По умолчанию 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);}) 

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

+0

Мое понимание того, как «это» работает правильно? – thecoshman

+0

@thecoshman, если вы не используете 'context: this',' this' будет внутренним объектом jQuery. –