如何使用live来循环动态创建的元素?

时间:2013-08-01 22:32:57

标签: javascript jquery

如何使用live循环遍历由 AJAX 返回的动态创建的元素? AJAX返回下面的HTML ...现在,在获得该HTML之后,我如何循环它以检索id值?我使用.each()但它根本不起作用,我总是完美地使用它来获取静态HTML数据..如何将{.each与.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>

2 个答案:

答案 0 :(得分:0)

您应该在AJAX success回调中捕获ID。

以下是您使用.load()时的示例。

var ids = [];

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

答案 1 :(得分:0)

Ajax是异步的因此您需要处理请求的success回调内的循环。

您使用live将事件附加到动态创建的元素(不建议使用)。需要将其替换为.on

  

如何将.each与.live()函数一起使用?

each用于迭代对象,live用于附加事件。你永远不会把他们俩聚在一起。

相关问题