Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   получить ссылку на функцию (https://javascript.ru/forum/misc/8138-poluchit-ssylku-na-funkciyu.html)

micscr 10.03.2010 08:48

получить ссылку на функцию
 
Привет.

Имеем, например
<p onclick="alert('1')">

Мне надо его удалить из dom, а новому вставляемому элементу присвоить ссылку на существующий у удаляемого обработчик onclick. Как это можно сделать?

Спасибо.

Gvozd 10.03.2010 09:09

в чем проблема?
получить обработчик с удаляемого элемента?
если обработчик навешен посредством атрибута/свойства onclick, то и найти его можно там же, в свойстве объекта
если повешен с помощью addEventListener, то надо где-то(например в отдельном свойстве-массиве элемента) хранить информацию о повешеных обработчиках, так как в явном виде они нигде не присутсвуют.так делается во всех фреймворках, насколько я в курсе.
повесить обработчик на создаваемый элемент?
вроде бы также не должно быть проблемы.
конкретизируйте что именно у вас не получается, потому что мне кажется, вам трудностей это не должно составлять

не прочитал название темы.
конкретно для данного случая, повешенный обработчик находится в свойстве onclick удаляемого элемента.
в случае же addEventListener, вам придется изменить свой код так, чтобы при навешивании обработчика где-то в кеше(например в неиспользуемом стандартно свойстве самого объекта) сохранялась ссылка на обработчик. иным способом получить ссылку на навешенный обработчик нельзя

micscr 10.03.2010 09:35

это меня на другом форуме сбили и начал подтуплять.
Понял, что через onclick.
Там просто темку запостили:
есть какой-то элемент и на нем различные обработчики висят и js назначенные и jQuery. Этот элемент например <p> надо поменять на <div><span></span></div> и все обработчики <p> навесить на <span>.
С onclick уже понял а jQuery где-то по другому прячет, редиска.

micscr 10.03.2010 10:10

Вообще странно. Вот пишу на чистом JS:
Смысл - вывести все св-ва списка и среди них onchange. Жму кнопку первый раз - onchange в списке нет. Выполняю onchange списка, жму кнопку вывода - уже имеется. Почему так?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html >
<head>
<title>222222222222</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<style>
div {background-color:#009999; height:200px; width:500px;}
span {background-color:#3366FF; color:#FF0000}
</style>

  </head>
 <body>
 <select name="xx" id="xxx" onChange="alert('111')">
 <option value="1">11111</option>
 <option value="2">22222</option>
 <option value="3">33333</option>
 </select>
 </body>
 

<button onClick="whatdo()" id="but1">Действие</button><br>
<div id="ddd"></div>
<script type="text/javascript">

var k = null;
function copyEv(objFrom)
{
    var ev;var s = '';
    for (ev in objFrom)
	{
	    if (typeof objFrom[ev] == 'function') {
		  s += ev + '<br>';
		}
	}

	document.getElementById('ddd').innerHTML = s;
}

function whatdo()
{
	var obj =   document.getElementById('xxx');
	copyEv(obj);
}


</script>
</html>

micscr 10.03.2010 10:58

Предыдущий вопрос (по js), если кто знает, остается в силе:) .

А с копированием вроде разобрался - глянул как в самом jQuery клонирование выполняется.


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