OnClick vs innerHTML
Есть элемент
<div><div id='divId'>imkw</div></div> Есть скрипт function test() { i = document.getElementById('divId'); i.onclick = function() { alert('WTF') } // Добавляет. Все ок i.parentNode.innerHTML = i.parentNode.innerHTML + 'P.S. ..'; } test(); innerHTML грохает добавленный onclick. А нужно сделать так, чтоб все было как и до него. Подскажите пожалуйста |
а что Вы добавляете?
какой то текст? |
Virrt,
Вариант... <!DOCTYPE HTML> <html> <head> <title>Untitled</title> </head> <body> <div><div id='divId'>imkw</div></div> <script> function test() { i = document.getElementById('divId'); i.onclick = function() { alert('WTF') } i.parentNode.appendChild(document.createTextNode('P.S. ..')); } test(); </script> </body> </html> |
Да. Текст
Не, можно и appendChild сделать. Но это план Б ) Интересно какие еще есть варианты. Может событие есть возможность вписать как-то более жестко |
О. А вот document.createTextNode() я не знал. Так уже и с appendChild-ом все не по индуски выглядит. Спасибо
|
Virrt,
Делегирование событий |
<div><div id='divId'>imkw</div></div> <script> function divClick(sel) { alert('WTF') } function test() { i = document.getElementById('divId'); i.setAttribute('onclick','divClick(this)'); // Добавляет. Все ок i.parentNode.innerHTML = i.parentNode.innerHTML + 'P.S. ..'; } test(); </script> |
А если добавляется не текст? Например с Аякса приходит html-страница? У меня различные условия для этой проблемы есть )
|
Virrt,
смотрите делегирование ---ссылка выше -- тоже самое для jquery -- on вешают клик на документ и проверяют по какому элементу кликнули. |
Атрибутами проблема решилась. Спасибо. И за ссылку спасибо. Освою
|
Часовой пояс GMT +3, время: 17:31. |