
Частый посетитель

Покинул форум
Сообщений всего: 872
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)

|
ladan100 пишет:CODE ( javascript):
скопировать код в буфер обмена
function my_function() { alert(5); } click_element(my_function()); function click_element(user_function) { $(document).on('click','span',null,function () { user_function; /* как сделать, чтобы срабатывал alert(5) по нажатию на span?. Ничего не происходит */ }); }
Здравствуйте! Предположим у меня есть много файлов, где повторяется одна и таже функция on click, но с некоторыми отличиями, я ее добавил в отдельную функцию click_element. Внутри самой функции click_element находится сам обработчик, внутри которого я хочу выводить какую-нибудь функцию, в этом примере каждый раз должен срабатывать alert(5), но ничего не происходит. Alert(5) срабатывает только при старте функции
Добрый день!
Сделал на чистом JS так, чтобы это работало не только для тэга 'span'
и показал, как в обработчике вывести не только alert(5),
но и id тэга и его innerHTML (может пригодится)
Здесь function click_element только для современных браузеровСпойлер (Отобразить)CODE ( html):
скопировать код в буфер обмена
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Test JS Function</title> <style> span{cursor:pointer} span:hover{color:red} </style> </head> <body> <span id="1">A</span> <span id="2">B</span> <span id="2">C</span> </body> <script> var my_function = function(){alert(5+" / id: "+this.getAttribute('id') +" / innerHTML: "+this.innerHTML );} click_element(my_function,"span"); //-------------------------------------- function click_element(user_function, tagName) { const elementsByTagName = document.getElementsByTagName(tagName); for (let element of elementsByTagName) { element.addEventListener("click", user_function); } } </script> </html>
Здесь function click_element для устревших(например, для IE) и для современных браузеровСпойлер (Отобразить)CODE ( javascript):
скопировать код в буфер обмена
function click_element(user_function, tagName) { elementsByTagName = document.getElementsByTagName(tagName); for(i = 0; i < elementsByTagName.length; i++) { elementsByTagName[i].addEventListener("click", user_function); } }
Удачи!
|