Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2011, 23:03
Интересующийся
Отправить личное сообщение для meryfelow Посмотреть профиль Найти все сообщения от meryfelow
 
Регистрация: 26.10.2010
Сообщений: 19

Проблемы с вызовом функций обьекта
Есть обьект.
function slider () {

		this.rightScroll = "#right-scroll";
		

		this.init = function() {
		
				jQuery(this.rightScroll).click(function() {
					this.rightStep();
				});
			
			}
			
		this.rightStep = function() {
			alert("ok");
		}
}


Вызываю его.
$(document).ready(function() {
			
				var slider1 = new slider();
				slider1.init();

			})

И вот что мне выдает.
this.rightStep is not a function
и не вызывает ее - в чем может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2011, 23:06
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
this.rightStep
this в данном контексте является объектом jQuery, т.к. вы его используете внутри метода click.
__________________
kobezzza
code monkey
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2011, 23:08
Интересующийся
Отправить личное сообщение для meryfelow Посмотреть профиль Найти все сообщения от meryfelow
 
Регистрация: 26.10.2010
Сообщений: 19

И как обойти такое поведение - есть какое - то решение?
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2011, 23:10
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

попробуйте сохранить контекст(this) в переменной

function slider () {

                *!*var copy = this;*/!*

		this.rightScroll = "#right-scroll";
		

		this.init = function() {
		
				jQuery(this.rightScroll).click(function() {
					*!*copy*/!*.rightStep();
				});
			
			}
			
		this.rightStep = function() {
			alert("ok");
		}
}
Ответить с цитированием
  #5 (permalink)  
Старый 21.07.2011, 23:10
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

У вас там замыкание, т.е. мы можем сделать так
this.init = function() {
	var $this = this;
	jQuery(this.rightScroll).click(function() {
		$this.rightStep();
	});
			
}


Либо подменить this методами call/apply, но хрен знает как на ето jQuery отреагирует)
__________________
kobezzza
code monkey
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2011, 23:12
Интересующийся
Отправить личное сообщение для meryfelow Посмотреть профиль Найти все сообщения от meryfelow
 
Регистрация: 26.10.2010
Сообщений: 19

Спасибо, попробую поиграться
Ответить с цитированием
  #7 (permalink)  
Старый 29.05.2013, 08:38
Новичок на форуме
Отправить личное сообщение для adela Посмотреть профиль Найти все сообщения от adela
 
Регистрация: 29.05.2013
Сообщений: 2

http://www.test-inside.com/
http://www.unifesp.br
https://www.facebook.com/Cisco
http://www.prmia.org
http://www.test-inside.com/220-801.htm

Последний раз редактировалось adela, 22.07.2014 в 07:12.
Ответить с цитированием
  #8 (permalink)  
Старый 29.05.2013, 08:39
Новичок на форуме
Отправить личное сообщение для adela Посмотреть профиль Найти все сообщения от adela
 
Регистрация: 29.05.2013
Сообщений: 2

i would like to appreciate you for sharing such a great info with us
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Превращение значения обьекта в название функции. alexandre Общие вопросы Javascript 4 16.02.2011 00:04
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 12:20
Проблемы с вызовом функции pismenov Events/DOM/Window 19 10.07.2009 10:02
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 13:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 16:47