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, время: 07:42. |