[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача this в функцию
qari
Ребята подскажите как решить делему:

$('.btn-submit').click(function () {

$.getJSON('/ajax/', {
action: 'test', data: 1}, function (json) {
setTimeout(function () {
$(this).html(val).removeAttr('disabled'); // здесь не видет THIS
}, 1000);
});
});


Как заставить внутри функции видеть обект THIS?
linker
Возможно это криво, я не js-кодер, но
$('.btn-submit').click(function () {
var button = this;
$.getJSON('/ajax/', {
action: 'test', data: 1}, function (json) {
setTimeout(function () {
$(button).html(val).removeAttr('disabled'); // здесь не видет THIS
}, 1000);
});
});


_____________
Gear Framework
Gear Framework на Github
sergeiss
Цитата (qari @ 14.01.2014 - 08:32)
Как заставить внутри функции видеть обЪект THIS?

Это называется "замыкание" в JS. Например, вот тут глянь: http://javascript.ru/basic/closure

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
EvilDev
$.getJSON('/ajax/', { action: 'test', data: 1}, function (json) {
setTimeout(function () {
$(this).html(val).removeAttr('disabled'); // здесь не видет THIS
}.bind(this), 1000);
}.bind(this));


Навскидку

_____________
HTML5, CSS3, jQuery, Node.js, PHP, Yii, Joomla, MySQL, MongoDb, GIMP
qari
Цитата (linker @ 14.01.2014 - 04:44)
Возможно это криво, я не js-кодер, но
$('.btn-submit').click(function () {
var button = this;
$.getJSON('/ajax/', {
action: 'test', data: 1}, function (json) {
setTimeout(function () {
$(button).html(val).removeAttr('disabled'); // здесь не видет THIS
}, 1000);
});
});

Метод рабочий, но ниже есть вариант с использованием bind(). Он тоже рабочий.
qari
Цитата (EvilDev @ 14.01.2014 - 10:56)
$.getJSON('/ajax/', { action: 'test', data: 1}, function (json) {
setTimeout(function () {
$(this).html(val).removeAttr('disabled'); // здесь не видет THIS
}.bind(this), 1000);
}.bind(this));

Навскидку

Вариант рабочий, но кода больше. Может все же передавать через переменную лучше?
killer8080
Цитата (qari @ 14.01.2014 - 13:26)
Вариант рабочий, но кода больше. Может все же передавать через переменную лучше?

так обычно и делают
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.