2013-08-01 3 views
-1

Как использовать live для циклического перехода через динамически созданные элементы, возвращаемые AJAX ??? AJAX возвращает HTML ниже ... Теперь, после получения этого HTML, как я могу его пропустить, чтобы получить значения id? Я использовал .each(), но он вообще не работает, и я всегда использую его для статических данных HTML. Как я могу использовать .each с функцией .live()? Я использую жить по щелчку без проблем ..Как я могу использовать live для прокрутки динамически созданных элементов?

// this HTML is provided by AJAX dynamically 
    <div id="defaults"> 
     <div id="badge_id" class="unique_ids database_key ui-droppable ui-sortable"> 

    <h1 class="ui-widget-header"> 
    <label class="description">Badge ID</label> 
    </h1> 

      <div class="ui-widget-content"> 
       <ol></ol> 
      </div> 
      <li id="0" class="ui-draggable">dsifs</li> 
     </div> 
     <div id="registration_type" class="unique_ids database_key ui-droppable ui-sortable"> 

    <h1 class="ui-widget-header"> 
    <label class="description">Registration Type</label> 
    </h1> 

      <div class="ui-widget-content"> 
       <ol> 
        <li class="placeholder">Add "Registration Type" here</li> 
       </ol> 
      </div> 
     </div> 
    </div> 
+0

, в какой jquery-версии вы используете '.live()' устарел с 1.7, вместо этого используйте '.on()'. Также опубликуйте код, который вы пытались получить ids. –

+0

Используйте '.live()' для циклирования элементов и получения идентификаторов? –

+1

В исходном вопросе: http://stackoverflow.com/questions/18002067/each-jquery-isnt-looping-through-element-created-dynamically-by-php/ (что является дубликатом этого) - я отправил точную структуру кода, необходимую для достижения того, чего вы хотите. – Joe

ответ

0

Ajax является асинхронной Таким образом, вы должны были бы справиться с зацикливание внутри success обратного вызова запроса.

Вы используете live для присоединения событий к динамически созданным элементам (устаревшим). Необходимо заменить его .on

Как я могу использовать .each с функцией .live()?

each используется для перебора объектов и live прикрепить события. Вы никогда не объединяете их обоих.

+0

то как я могу прокручивать динамически созданные элементы .. каждый в этом случае не работает! –

+3

Вы можете перебирать их после добавления элементов в 'DOM ' –

0

Вы должны захватить идентификаторы в AJAX success обратного вызова.

Вот пример, если вы использовали .load().

var ids = []; 

$('#result').load('ajax/test.html', function() { 
    $('#saveButton').on('click',function() { 
     $('#result *[id]').each(function() { 
      ids.push($(this).attr('id')); 
     }); 
    }); 
}); 
+0

ids предоставляются после того, как AJAX вернул файл. AJAX замалчивает файлы без id, только когда пользователь заполняет это поле и нажимает SAVE, что идентификатор предоставлен .. в этом случае, как я могу ge идентификатор динамически возвращенных HTML-полей после ввода пользователем? AJAX не возвращает форму с идентификаторами –

+0

Смотрите мой обновленный код выше. В принципе, вы можете прикрепить событие к кнопке сохранения после завершения загрузки AJAX. Затем, когда нажата кнопка сохранения, вы можете собирать идентификаторы. – DesignerGuy