Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает код внутри post (https://javascript.ru/forum/dom-window/67064-ne-rabotaet-kod-vnutri-post.html)

Officeoff.ru 26.01.2017 12:44

Не работает код внутри post
 
Добрый день.
Уже создавал на этом форуме несколько похожую тему, но так и не решили.
Не работает код, который который находится внутри post.

$.post("/document/updateStatus", {id:id, doc:doc}, function(data){
					
	$(this).closest('.tdStatus').find('.slct').css({'background':'red'});

},"json");


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

И извечный вопрос, что делать?

ksa 26.01.2017 13:37

Цитата:

Сообщение от Officeoff.ru
Выношу этот код за пределы post, все отлично работает.

Куда конкретно ты его выносишь? :D
И какой результат ты ждешь от этого?
Цитата:

Сообщение от Officeoff.ru
$(this)

Так же нужно начинать учиться тестить свой код. Или начать посещать раздел "работа", дабы другим башлять за работу... ;)

Dilettante_Pro 26.01.2017 13:38

Officeoff.ru,
А какой будет this в этом контексте?
http://javascript.ru/tutorial/object/thiskeyword

ksa 26.01.2017 13:54

Officeoff.ru, вот тебе еще статейка, т.с. для общего понимания. ;)

Officeoff.ru 26.01.2017 14:22

Я как-то не понял причину такого сарказма ))
Понятное дело, я знаю что такое this.
Если нужен полный код, то не вопрос.

Этот код цвет не меняет. Хотя в data приходит
$('.table').one('click', 'li', function() {
	var id = $(this).attr("data-id");
	var doc = $(this).closest('ul').attr("data-doc");

	$.post("/document/updateStatus", {id:id, doc:doc}, function(data){
		console.log(data);
		
		$(this).closest('.tdStatus').find('.slct').css({'background':'#'+data.color});
	
	},"json");

	
	dropBlock.slideUp();
});


Если сделать так, то работает
$('.table').one('click', 'li', function() {
	var id = $(this).attr("data-id");
	var doc = $(this).closest('ul').attr("data-doc");

	$.post("/document/updateStatus", {id:id, doc:doc}, function(data){
		console.log(data);
		

	
	},"json");

	$(this).closest('.tdStatus').find('.slct').css({'background':'red'});
	dropBlock.slideUp();
});

laimas 26.01.2017 14:25

Цитата:

Сообщение от Officeoff.ru
Если сделать так, то работает

Здесь $(this), это источник события, LI.

Цитата:

Сообщение от Officeoff.ru
Этот код цвет не меняет.

Здесь $(this) не источник события, LI.

Цитата:

Сообщение от Officeoff.ru
Понятное дело, я знаю что такое this.

?

рони 26.01.2017 14:27

Officeoff.ru,
в строке 4 сохранить this и в строке 8 использовать вместо this.

ksa 26.01.2017 15:41

Цитата:

Сообщение от Officeoff.ru
Понятное дело, я знаю что такое this.

Отнюдь. :(

Officeoff.ru 26.01.2017 18:29

Цитата:

Сообщение от рони (Сообщение 442376)
Officeoff.ru,
в строке 4 сохранить this и в строке 8 использовать вместо this.

Большое спасибо. Я как-то не допер до этого.

Цитата:

Сообщение от ksa (Сообщение 442379)
Отнюдь. :(

Вот че прикалываться? Неужели сложно дать такой же ответ, как рони?

ksa 27.01.2017 08:19

Officeoff.ru, я тебе для чего дал ссылку на статью?
Как раз для того, что бы ты почитал про тот this. Но тебе видать проще в обидку кинуться...


Часовой пояс GMT +3, время: 23:33.