С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 26.01.2015
Сообщений: 3
1

Странное поведение вложенной функции

09.09.2015, 14:20. Показов 1210. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Ситуация следующая:
есть табличка
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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>
на ячейках второй строки таблицы, как вы видите, висит обработчик:
Javascript
1
2
3
4
5
6
7
8
function GoRemove() {
    alert('js start');
    $('td.rem').click( function() {
        alert($(this).parent().find("td:eq(0)").html());
        return false;
    });
    alert('js end');
}
При первом нажатии не происходит вызова внутренней процедуры, при втором - вложенная процедура вызывается дважды, при третьем - трижды и так далее.

Почему так происходит? Как это можно обойти?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2015, 14:20
Ответы с готовыми решениями:

Странное поведение
Здравствуйте, столкнулся с проблемой и никто не может сказать в чем может быть загвоздка, сам...

Странное поведение click
Добрый день! Есть динамическая таблица допустим я создаю строки номер строки значение 1 11111...

Странное поведение jQuery
В общем-то есть на странице пару простых чекбоксов c одним классом - пытаюсь достать их значение по...

Странное поведение обработчика событий
Доброго всем времени суток. Сегодня наткнулся на необъяснимую для меня штуку. Коротко: Есть...

3
433 / 352 / 259
Регистрация: 29.11.2011
Сообщений: 628
09.09.2015, 15:43 2
Лучший ответ Сообщение было отмечено AngrySpoon как решение

Решение

Лучше не использоваться устаревший атрибут onclick, а задавать обработчики в самом JS, например так: https://jsfiddle.net/3122zha2/

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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' data-go="remove">1</td>
            <td class='rem' data-go="remove">2</td>
        </tr>
    </tbody>
</table>
Javascript
1
2
3
4
5
6
7
8
$(function() {
    $('td[data-go="remove"]').on('click', function() {
        alert('js start');
        alert($(this).parent().find("td:eq(0)").html());
        alert('js end');
        return false;
    });
});
1
0 / 0 / 0
Регистрация: 26.01.2015
Сообщений: 3
09.09.2015, 15:48  [ТС] 3
Благодарю за исчерпывающий ответ!

маленькое уточнение: если я буду динамически создавать строку, то на нее нужно будет bind'ом повесить этот обработчик? или автоматом подтянется при указании селектора?
0
433 / 352 / 259
Регистрация: 29.11.2011
Сообщений: 628
09.09.2015, 15:56 4
Наоборот bind как-раз не имеет возможности увидеть динамически созданную строку, для этого используйте метод live, а лучше on
0
09.09.2015, 15:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2015, 15:56
Помогаю со студенческими работами здесь

Странное поведение при делегировании
Доброй ночи, Господа. Пишу некую доп. функциональность к календарю, но дело, собственно, не в...

странное поведение $.addClass методом
вот так все работает - анимация бекграунда в топ-меню &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta...

странное поведение Jquery и prompt()
Добрый день. У меня возникла довольно странная проблема с Jquery. Мне нужна была мини функция,...

Странное поведение firefox при AJAX запросе
Есть код(с маленькой примесью PHP, на понимание не влияет): window.onload = function(){ var...

Странное поведение - ajax + php + html/css
Здравствуйте! В целом я новичек в web-программировании. Опыт буквально несколько месяцев. Делаю...

Глобальная переменная изменяется только во вложенной функции,а за пределами остается прежней
Глобальная переменная не изменяется вне вложенной функции, нужно переменную checkName использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru