заставить код jquery работать для динамически добавляемого контента

0

Этот фрагмент кода работает для всех существующих html-папок, но как заставить его работать для динамически добавленных падений

Вот код jquery

$(document).ready(function () {

  $('select.select').each(function () {
    var title = $(this).attr('title');
    if ($('option:selected', this).val() != '') {
      title = $('option:selected', this).text();
      $(this)
        .css({
          'z-index': 10,
          'opacity': 0,
          '-khtml-appearance': 'none'
        })
        .after('<span class="select">' + title + '</span>')
        .change(function () {
          val = $('option:selected', this).text();
          $(this).next().text(val);
        })
    }
  });
});
Теги:
html-select

2 ответа

1
Лучший ответ
$(document).ready(function () {

    initDropDowns();

    function initDropDowns(){
      $('select.select').each(function () {
        var title = $(this).attr('title');
        if ($('option:selected', this).val() != '') {
          title = $('option:selected', this).text();
          $(this)
            .css({
              'z-index': 10,
              'opacity': 0,
              '-khtml-appearance': 'none'
            })
            .after('<span class="select">' + title + '</span>')
            .change(function () {
              val = $('option:selected', this).text();
              $(this).next().text(val);
            })
        }
      });
    }

    // on dropDowns add --> initDropDowns();

});
0

Вместо $ (document).ready() вам нужно использовать $ (document).live()

.ready() позволяет зарегистрировать обратный вызов, который запускается, когда DOM готов - это похоже на использование window.onload, но срабатывает раньше (и вы можете зарегистрировать более одного обратного вызова).

.live() позволяет регистрировать обратный вызов в диапазоне событий на основе селектора, который постоянно контролирует DOM и регистрируется на новые добавленные узлы.

  • 0
    live устарела с 1.7, удалена в jquery 1.9, см. api.jquery.com/live "Начиная с jQuery 1.7, метод .live () устарел. Используйте .on () для присоединения обработчиков событий. Пользователи более старых версий jQuery следует использовать .delegate () вместо .live (). "
  • 0
    Понял. Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню