Обработчик click вызывается несколько раз или не всегда вызывается
Добрый день,
Используем MSVS/C#/MVC2 Скрипт в динамически подгружаемом ascx (правда, он подгружается каждый раз при загрузке страницы): Код:
<script type="text/javascript"> 1. Заворачивать в $(document).ready(function () или нет. 2. Ставить live или просто click: Код:
$('#button1').click(function () { Если ставим live внутри document.ready, диалог по confirm вызывается несколько раз! (При старте один раз, потом после каждой перезагрузки части страницы по AJAX добавляется по разу.) Если ставить просто click внутри document.ready, то он работает, но только если контрол подгружается при первой загрузке страницы. А если он подгружается потом, то на нажатие никто не реагирует... Как быть? Хочется ставить обработчики именно в том файле ascx, где лежат элементы, на которые они должны навешиваться. Читал похожие темы здесь, все только обсмеивали авторов, а что конкретно делать (устроил бы именно такой ответ!!!), толком не предлагали. Мы сейчас занимаемся углублением знаний по C#/прочим языкам и сферам, связанным с приложением, а на JS/Jquery времени катастрофически не хватает. |
Хм... Я тоже с этим столкнулся, а ответа действительно нет.
Меня лишь спасло то, что в моём примере достаточно ограничитться методом click(). А как быть с live сам несколько дней голову ломаю. Кстати у и при "$(document).ready(function ()" не всегда работало. |
Цитата:
Срабатывает не всегда (когда без document.ready), потому, что у тебя элемент на который вешает обработчик не загрузился, следовательно его нет. А срабатывает потом, что когда грузиш его второй раз - элемент уже есть. live - этот метод делегирует события, т.е. накладывает на родителя событие, а при срабатывании смотрит на ком оно сработало (т.е. на детях) Цитата:
|
Часовой пояс GMT +3, время: 22:43. |