Javascript.RU

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

Многократное выполнение функции
Добрый день!

Ситуация следующая:
есть табличка
<table border="1px">
    <thead>
        <th>1</th>
        <th>2</th>
    </thead>
    <tbody>
        <tr>
            <td class='rem'>1.1</td>
            <td class='rem'>1.2</td>
        </tr>
        <tr>
            <td class='rem' onclick="GoRemove()">1</td>
            <td class='rem' onclick="GoRemove()">2</td>
        </tr>
    </tbody>
</table>


на ячейках второй строки таблицы, как вы видите, висит обработчик:
function GoRemove() {
    alert('js start');
    $('td.rem').click( function() {
    	alert($(this).parent().find("td:eq(0)").html());
        return false;
    });
    alert('js end');
}


При первом нажатии не происходит вызова внутренней процедуры, при втором - вложенная процедура вызывается дважды, при третьем - трижды и так далее.

Почему так происходит? Как это можно обойти?
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2015, 14:23
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Ну ты конечно молодец, навешиваешь клик на элемент кликом. И удивляешься.
При клике по td.rem происходит вызов функции GoRemove которая навешивает обработчик клика на все td.rem. И ничего визуально не происходит. При втором клике таки происходит удаление, и снова навешивается обработчик клика, то есть уже 2 обработчика, которые соответвенно исполняются 2 раза и так далее по нарастающей.

Сообщение от krasovsky
Как это можно обойти?
вешать обработчики вне функции

Последний раз редактировалось krasovsky, 09.09.2015 в 14:27.
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2015, 14:28
Новичок на форуме
Отправить личное сообщение для AngrySpoon Посмотреть профиль Найти все сообщения от AngrySpoon
 
Регистрация: 09.09.2015
Сообщений: 2

Принял, спасибо огромное! эт я что-то тормознул))
Еще раз спасибо, пойду делать)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задержать выполнение функции cevut Общие вопросы Javascript 2 08.03.2014 20:11
onclick прервать выполнение функции wgt Events/DOM/Window 4 30.04.2013 20:52
При выполнение строки кода вылетаю из функции. developer_ Events/DOM/Window 3 28.07.2011 00:45
Прерывается выполнение функции при смене аргумента mikser763 Общие вопросы Javascript 1 11.10.2010 16:36
Паралельное выполнение одной и той-же функции Сеня AJAX и COMET 3 24.01.2009 20:59