Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Повесить обработчик из фрейма (https://javascript.ru/forum/jquery/43121-povesit-obrabotchik-iz-frejjma.html)

Dozentos 23.11.2013 01:44

Повесить обработчик из фрейма
 
Во фрейме размещена форма для загрузки файла (картинки). После загрузки картинка добавляется на родительскую страницу фрейма. Но к ней неудаётся подключить обработчик события.
Добавляется так:
$(top.document).find('#pict').append('<span class='nomer_img'><img src='../".$dir.$fname."' height='60' width='60' /></span>');

Пытаюсь повесить обработчик так:
$(top.document).find('#pict > .nomer_img:last').on('click', function(){...});

Не работает :help:

Deff 23.11.2013 06:12

Dozentos,
Думаю просто ошибки, нужно смотреть тест страницу

Повесьте onclick="frameName.Fun(this)" прям на картинку

Dozentos 23.11.2013 17:57

Хм... вариант...
Сделал, работает... только почему-то вновь добавленные изо реагируют на щелчок только со второго раза... Это почему???

Deff 23.11.2013 18:48

Dozentos,
У меня супперколлайдер не работает -почему?
Экстрасенсы редкость...
Возможно какое событие еще на картинке

Dozentos 24.11.2013 04:23

Да нет там никаких больше событий. Просто во фрейме тупо повесил через
$(top.document).find('#picts').append('<span class='nomer_img' onclick='delete_image()'><img src='../".$dir.$fname."' height='60' width='60' /></span>');

Событие всегда срабатывает со второго раза...
На родительской странице есть изо изначально сгенерированные php скриптом для неё. На них срабатывает с первого. А на добавленных из фрейма со второго...

Deff 24.11.2013 05:51

Dozentos,
1. А как добавляете ?
Ибо событие на теге, добавляемое через вставку в html() ? В большинстве браузеров атрибуты событий на тегах вставленные через innerHTML вообще не работают
Нун добавлять так:

window.top.jQuery ("<span class='nomer_img' onclick='delete_image()'><img src='../".$dir.$fname."' height='60' width='60' /></span>").аppendTo(селектор(куда),top.document.body)


Правильнее запускать функцию на top.document, передавая ей ток ссылку - а она уже сама создаёт тег и .аppendTo(селектор) в текущем окне. (Хотя этой функции ничего не стоит и повесить событие, а не атрибут onclick в теге, и тогда и ставить можно через innerHTML)

ruslan_mart 24.11.2013 16:23

Цитата:

Сообщение от Dozentos
$(top.document).find('#picts').append('<span class='nomer_img' onclick='delete_image()'><img src='../".$dir.$fname."' height='60' width='60' /></span>');

У Вас тут синтактическая ошибка, смотрите какие кавычки ставите. :)

parent.$('#picts').append('<span class=\'nomer_img\' onclick=\'delete_image()\'><img src=\'../".$dir.$fname."\' height=\'60\' width=\'60\' /></span>');

Dozentos 25.11.2013 06:40

Здесь да, неправильно... виной тому то, что я исходную строку здесь редактировал (у меня этот скрипт добавляется тоже через php, я тут упрощал), в противном случае вообще бы не работало. А оно работает, но для вновь добавленных изо только со второго раза...


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