2013-04-09 4 views
2

Я работаю веб-разработчиком в течение нескольких лет (после того, как ранее был разработчиком клиент-сервер), и за последний год я сосредоточился на том, чтобы сделать себя лучше на стороне клиента программирование.Работа с событиями jQuery

Мой вопрос более фундаментальный, чем что-то конкретное. У меня есть пара пользовательских элементов ASP, которые являются полями, вложенными в div. Оба они содержатся в div, который представляет собой простомодульную панель jQuery. Одна из них - форма для подачи теста, а другая - форма, позволяющая добавить ученика без оставления модального всплывающего окна. Их видимость переключается, когда другой становится видимым.

Я бы сделал это последовательно (то есть, чтобы добавить ученика перед тестом), но студент может уже существовать, поэтому у меня есть вход для автозаполнения. Только если ученик еще не существует, они добавят новый.

Я обрабатываю все это (включая вставку студента) с использованием кода на стороне клиента.

Мне нужно, чтобы элементы управления с именем студента, id и т. Д. Заполнили тестовую форму после добавления, но я не хочу явно устанавливать элементы управления по идентификатору в тестовой форме. B/c используйте эту панель на других формах. Какой был бы лучший способ реализации этого? Моя первая мысль заключалась в том, чтобы обработать событие, когда студент div становится невидимым, но я не знаю, существует ли такое событие, и это заставило меня думать, что может быть более обычный способ.

Я надеюсь, что все имеет смысл. Я могу опубликовать какой-то код, если вам нужны какие-либо детали.

+0

Можете ли вы дать элементам управления общий идентификатор, а затем установить их атрибуты/значения на основе данных вашего ученика? Например, если у вас есть кнопка с идентификатором 'id =" nameButton', вы можете установить контент как '$ (" # nameButton "). Attr (" value ", student_name);' таким образом код все еще работает, когда у вас есть другое 'student_name'. – Jlange

ответ

1

Если я понимаю, что вы говорите ... и если вы контролируете видимость студенческого div, вы можете использовать метод обратного вызова для выполнения обновлений. Например:

$('#modal .student').hide(function(){ 
    /* do the update here */ 
}); 

В противном случае, я думаю, это будет зависеть от модального плагина и обратных вызовов, которые он предоставляет.

+0

Это близко к тому, что я имел в виду, два упомянутых divs вложены в один модальный div, поэтому: ' $ ('. student'). hide (function() { /* сделать обновите здесь */ }); ' Будет ли я реализовывать этот обратный вызов на каждой странице или пользовательском элементе управления, а затем, чтобы обновить определенные элементы управления, которые мне нужны? – Ryan

+0

Это поможет, если вы поделитесь некоторыми HTML и, возможно, пользовательские элементы управления работают на странице. Не могли бы вы привязаться к элементу управления с помощью [делегированного события] (http://api.jquery.com/on/#direct-and-delegated-events)? – Mottie

+0

Спасибо за ответы; на делегированные события очень полезны. Чтобы все было просто, я просто буду использовать подход, о котором говорил Jlange, так как я думаю, что я переусердствовал. Тем не менее, информация о событиях очень полезна, поскольку я не знаком с тем, как они работают в jQuery/JavaScript, кроме основных принципов привязки и обработки. – Ryan

Смежные вопросы