Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не работает js после динамической перезагрузки (https://javascript.ru/forum/dom-window/45417-ne-rabotaet-js-posle-dinamicheskojj-perezagruzki.html)

javaquester 27.02.2014 19:21

Не работает js после динамической перезагрузки
 
Здравствуйте, проблема в том, что есть таблица, в некоторых элементах которой есть атрибуты onClick, когда эта часть таблицы перезагружается вместе с атрибутами - функции в onClick уже не работают, хотя до перезагрузки все хорошо. Подскажите решение. Спасибо.

ksa 27.02.2014 20:20

Цитата:

Сообщение от javaquester
когда эта часть таблицы перезагружается вместе с атрибутами - функции в onClick уже не работают

Потому как у этих элементов нет тех событий...
Как вариант используй делегирование.
http://api.jquery.com/on/#on1

danik.js 27.02.2014 23:43

javaquester, похоже ты чего-то путаешь:

<table>
    <tr><td onclick="alert('OK')">Клик ми</td></tr>
<table>
<script>
    // перезагружаем содержимое
    document.body.innerHTML = document.body.innerHTML;
</script>


Не наблюдаю проблем. Их и не должно быть.

kostyanet 28.02.2014 10:56

Часть таблицы не может перезагрузиться. Я уже начал помаленьку понимать народный русский язык. У ТС скорее всего аяксом приходит кусок табли, которую он со всеми он-кликами как текст, хтмл, пихает в пагу и типа готово.

javaquester 28.02.2014 16:47

Именно. Подскажете как добиться работоспособности? Произвольный код, типа alert() выполняет, а вот функцию упорно не видит.

danik.js 28.02.2014 21:15

Цитата:

Сообщение от kostyanet
скорее всего аяксом

Не суть важно. Хоть аяксом, хоть хуяксом - это не имеет значения.
Цитата:

Сообщение от javaquester
а вот функцию упорно не видит

Какую? Ту что передается в куске HTML внутри тега <script> ? Ну тогда да, теги скриптов при вставке через innerHTML не исполняются.

kostyanet 01.03.2014 00:14

Цитата:

Сообщение от danik.js
Не суть важно. Хоть аяксом, хоть хуяксом - это не имеет значения.

Аналогичный хуякс обсуждают http://stackoverflow.com/questions/5...fter-ajax-load

Пишут надо профтыкать события по-новой после загрузки иннера в мозг браузера.

Одно непонятно, за каким вешать события на элементы таблицы? С одного щелчка по таблице выясняется вся подноготная через объект Event.

Найти урл оказалось не просто. Не косячит народ в таком хуяксе. Как-то обходятся без загрузки он-кликов с сервера в каше кодов.

javaquester 01.03.2014 14:08

Цитата:

Сообщение от danik.js (Сообщение 300037)
Не суть важно. Хоть аяксом, хоть хуяксом - это не имеет значения.
Какую? Ту что передается в куске HTML внутри тега <script> ? Ну тогда да, теги скриптов при вставке через innerHTML не исполняются.

<a onclick="myFunction();"></a>
Пробовал вешать обработчик .On - без релоада - все ок, с - не работает.

danik.js 01.03.2014 15:18

Цитата:

Сообщение от javaquester
не работает

<script>
    function myFunction(){
        alert('ok');
    }
</script>
<table>
    <tr><td onclick="myFunction()">Клик ми</td></tr>
<table>
<script>
    // перезагружаем содержимое
    document.body.innerHTML = document.body.innerHTML;
</script>


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