Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.07.2011, 14:10
Аспирант
Отправить личное сообщение для tarya Посмотреть профиль Найти все сообщения от tarya
 
Регистрация: 29.03.2011
Сообщений: 49

jquery this и object this
Добрый день друзья. Подскажите новичку если есть возможность.

Например у меня есть объект.

var o = { fieldname:'a', get:function(){ alert(this.arr[1]);}, arr: [1,2,3] };


Если сделать:

o.get(); // 2


То все будет работать как и задумано. И ответ будет 2.

Вопрос в ином, например в методе get у нас будет кусочек jquery кода.

Например:

$(this.fieldname)
        .click(function() {
            $(this)... ....
        })


То ничего работать не будет. Так как this.fieldname относится к объекту, а $(this) - это к jquery.

Не знаю понятно ли изъяснился, прошу подсказать как обойти данную проблему, или как это грамотно решается? Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2011, 14:32
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

var obj = {
    selector: '#test',
    test: function() {
        var _this = this;
        $(this.selector).click(function() {
            console.log(this, _this);
        });
    }
};
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2011, 14:59
Аспирант
Отправить личное сообщение для tarya Посмотреть профиль Найти все сообщения от tarya
 
Регистрация: 29.03.2011
Сообщений: 49

Спасибо, проанализирую.
Ответить с цитированием
  #4 (permalink)  
Старый 22.07.2011, 21:07
Аспирант
Отправить личное сообщение для tarya Посмотреть профиль Найти все сообщения от tarya
 
Регистрация: 29.03.2011
Сообщений: 49

С сожалению такой вариант наверное не будет работать так как переменная var _this = this; будет доступна только в методе test, а если будет второй метод то как из него вызвать _this.test() если там ничего не известно о ней.

Тут вопрос в чем, например var _this = this; можно вынести за пределы объекта, но я хочу этот объект клонировать, что уже и сделал, чтоб можно было вызвать два разных объекта:

var bTest = clone(aTest);
    aTest.On("#searchquery");
    bTest.On("#global-search");


Пока же у меня не запускается вторая версия, что происходит тот конфликт о котором я писал выше.

Спасибо за ваше время.
Ответить с цитированием
  #5 (permalink)  
Старый 22.07.2011, 22:07
Аспирант
Отправить личное сообщение для tarya Посмотреть профиль Найти все сообщения от tarya
 
Регистрация: 29.03.2011
Сообщений: 49

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

Спасибо за внимание.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 разных модуля на jQuery - как подключить? finder jQuery 4 23.03.2012 22:29
jQuery object в xpath. Глобальные события solarix jQuery 1 29.10.2010 16:40
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16
jQuery UI - странные глюки Dragable+Sortable dab512 jQuery 0 23.03.2009 08:45