Цитата:
В таком случае нужно привязывать on к body, а это, думаю, затратно. |
Цитата:
|
Цитата:
<style> td {border: solid 1px; cursor: pointer} </style> <body> <button id="but">create table</button> <script> window.onload = function () { var str = '<table>'; for (var i = 0; i < 10; i++) { str += '<tr>'; for (var j = 0; j < 10; j++) { str += '<td>' + i + j + '</td>'; } str += '</tr>'; } str += '</table><br>'; document.body.onclick = function (e) { e = e || event; var target = e.target || e.srcElement; if (target.id == 'but') { document.body.innerHTML += str; } else if (target.tagName == 'TD') { alert(target.innerHTML) } } } </script> |
Цитата:
А если в таблице появятся ссылки и input-ы, как быть? |
Цитата:
Никто особо не вспотеет при его использовании. |
Цитата:
|
Да это как в анекдоте:
На выпуске агентов по защите авиалиний от терористов... - Представьте, что вы в лайнере где 500 пассажиров и есть один терорист с бомбой... Ваши действия? - Я путем тестов, которым обучался, вычислю того терориста и нейтрализую. - Хорошо... Усложним задачу. У того терориста есть сообщник с еще одной бомбой! - Так же используя тесты, вычислю обоих... Дождусь пока один отвлечется, устраню другого, а потом и первого. - Хорошо... А если у терористов будут свои люди в салоне? И у них тоже будут бомбы? - Я не совсем понимаю... Вы сами-то за кого? |
Цитата:
Но, всё же, я думаю, код не будет работать как надо в этом примере: Код:
|
<style> td {border: solid 1px; cursor: pointer} </style> <body> <button id="but">create table</button> <script> window.onload = function () { var str = '<table>'; for (var i = 0; i < 10; i++) { str += '<tr>'; for (var j = 0; j < 10; j++) { str += '<td><input type="checkbox" /> ' + i + j + '</td>'; } str += '</tr>'; } str += '</table><br>'; document.body.onclick = function (e) { e = e || event; var target = e.target || e.srcElement; if (target.id == 'but') { document.body.innerHTML += str; } else if (target.tagName == 'TD') { alert(target.children[0].checked + '; ' + target.innerText || target.textContent); //в FF только textContent, в IE только innerText } } } </script> |
bes - Хорошее решение!
Я решил эту задачу на JQ таким образом: $("body").on("click", "tr", function(){ alert(1); }) .on({ "mouseenter": function(){ $("body").off("click", "tr"); }, "mouseleave": function(){ $("body").on("click", "tr", function(){ alert(1); }); }, }, ".tr input, .tr a"); Вопрос на сколько это сильно грузит браузер остаётся открыт. |
Часовой пояс GMT +3, время: 12:48. |