Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите решение проблемы с onclick (https://javascript.ru/forum/misc/52189-podskazhite-reshenie-problemy-s-onclick.html)

Siend 07.12.2014 17:25

Подскажите решение проблемы с 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

Подскажите как решить такую проблему, плиз!

jsnb 07.12.2014 17:44

Ну сохрани ссылку на this вне функции и обращайся через замыкание. Кликнутый элемент так же можно отследить через event.target.

Vlasenko Fedor 07.12.2014 18:11

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

вроде и так должно работать, не проверял

Siend 07.12.2014 18:12

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


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