Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2014, 05:44
Новичок на форуме
Отправить личное сообщение для dand1 Посмотреть профиль Найти все сообщения от dand1
 
Регистрация: 04.06.2014
Сообщений: 5

Не правильно применяется функция в цикле
Привет всем, собственно проблема в том, что когда я в цикле обхожу массив,
for (var key in opt.footer){
                        var _f = self.options.footer[key], _button = $(_f._button);
                        p.find(".p-footer").append(_button);
                        console.log(_f.action)
                        _button.click(function(evt){
                            _f.action(evt, p);
                        })
                    }

происходит какая то не понятная для меня ситуация, он применяет последнюю функцию к обеим button's, вот сам array
footer: [{_button: '<button>да</button>', action: function (evt, obj){
                                        obj.remove();
                                        alert("first")
                                        category_flag = true;

                                    }}, {_button: '<button >нет</button>', action: function (evt, obj){
                                        obj.remove();
                                        alert("second")
                                         }}]
,
подскажите как обойти эту проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2014, 06:02
Новичок на форуме
Отправить личное сообщение для dand1 Посмотреть профиль Найти все сообщения от dand1
 
Регистрация: 04.06.2014
Сообщений: 5

$.each(self.options.footer, function (i, _f){
                        var div = document.createElement("div");
                        var _button = _f._button;
                        div.innerHTML = _button;
                        var f = function (){alert(_f.action)}
                        div.firstChild.addEventListener("click", function(evt){
                            f()
                        })
                        p.find(".p-footer").append(div);
//                        console.log(_f.action)
                    });

вот так нормально работает, а почему в цикле не применялся?
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2014, 06:53
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

http://learn.javascript.ru/closures
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX функция для новых html-элементов broadcast77 AJAX и COMET 25 03.03.2014 14:01
Функция в цикле starkexpo13 Общие вопросы Javascript 3 06.03.2013 19:12
Скрыть/показать кнопки созданные в цикле jamescameron Элементы интерфейса 3 11.02.2013 14:22
в цикле JS-скрипта не срабатывает функция miroshni.cs Оффтопик 0 12.10.2012 23:00
Jquery функция в цикле rostrid Общие вопросы Javascript 2 22.02.2011 21:47