Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.12.2014, 17:25
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

Подскажите решение проблемы с onclick
for (var i = 0; i < this.ceMenu; i++) {
$('<div id=' + this.mcount + 'M' + i + ' class="arc" fname="'+this.menuList[this.curMenu][1 + i]+'">' + (this.menuList[this.curMenu][1 + i]) + '</div>').appendTo(this.menu).css({ 'top': (this.yMenu - 25) + 'px', 'left': (this.xMenu - 25) + 'px' });

document.getElementById(this.mcount + "M" + i).onclick = this.menuAction.bind(this)}//задача запустить функцию menuAction с параметром (this.menuList[this.curMenu][1 + i]) и this который будет не div а this.menu.

Проблема в том, что используя bind я теряю возможность обратиться к объекту div (в атрибуте fname которого храню требуемый параметр), а как передать его напрямую я не знаю(
Если bind не использую, то теряю ссылку на объект this.menu

Подскажите как решить такую проблему, плиз!
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2014, 17:44
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Ну сохрани ссылку на this вне функции и обращайся через замыкание. Кликнутый элемент так же можно отследить через event.target.
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2014, 18:11
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

$(this.mcount + "M" + i).on('click',  this.menuAction.call(this.menu));

вроде и так должно работать, не проверял
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2014, 18:12
Профессор
Отправить личное сообщение для Siend Посмотреть профиль Найти все сообщения от Siend
 
Регистрация: 04.02.2012
Сообщений: 196

замыкание не вариант было юзать, не буду вдаваться в подробности, а вот event.target полностью решил проблему, спасибо большое!)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Проблемы с iframe в ie GRean Общие вопросы Javascript 1 14.05.2010 10:29
Коллажик. Подскажите решение digital_sword jQuery 2 28.04.2010 09:50
Как совместить работу onmouseover, onmouseout и onclick Sed0Y Общие вопросы Javascript 11 11.08.2009 15:59
Подскажите как сделать (события onmouseover и onclick) House M.D. Я не знаю javascript 2 04.06.2009 09:50