Ваш код подключит обработчики событий ко всем элементам с таким классом , которые уже существуют, когда код называется . Если вы добавите больше позже, они не получат обработчик, потому что, ну, вы не спросили, что они делают. :-) Опции:
- Вместо этого вы можете использовать
live
, если вы добавляете и удаляете эти элементы динамически. live
(и связанные delegate
) используют делегирование события для отслеживания событий, а не для прикрепления обработчиков к рассматриваемым элементам. live
использует сам document
. Так как click
пузыри, document
видит все клики (которые не отменены), и поэтому обработчик jQuery для всего документа может видеть, был ли клик на элементе .btnSave
, и запускать ваш обработчик, если так.
- Вы можете поместить свой скрипт внизу страницы (непосредственно перед закрывающим элементом
</body>
), чтобы все элементы были там, когда вы подключаете свой обработчик.
- Вы можете использовать функцию jQuery
ready
, чтобы DOM был готов, прежде чем подключать обработчики.
С другой стороны, как указано, ваш span
чертовски труден для щелчка (что из-за того, что он полностью пустой), если только не существует CSS, дающего размеры, которые вы не показали ...; -)
Обновление : Вы сказали, что у пролета есть измерения, и что обработчик подключен нормально (вы не сказали как вы это знаете). Остается только то, что что-то подключает событие click
к этим элементам и отменяет их (например, через stopImmediatePropagation
, , как это ), и случается, что они ' ранее в списке обработчиков событий, чем ваш обработчик. Впрочем, более вероятно, что есть проблема с подключением.