获取动态生成的列表项值

时间:2013-09-09 14:43:12

标签: listview jquery-mobile

修改/更新: 好的,所以我觉得现在有点羞怯。经过将近两天的时间盘旋这个问题后,我找到了一个非常接近发布的解决方案。

简而言之,点击检测$('#someListView li').click(function() {需要移出pageinit事件,并在生成列表项后置于pagebeforeshow事件中。这似乎解决了这个问题,虽然我必须承认我不太清楚为什么......

此外,不需要.trigger("create")。我希望它有所帮助。

=============================================== ==

原始查询:

我有一个小问题,我设法归结为下面的问题。基本上我想从动态生成的attr列表项中获取数据值listview。听起来很简单。硬编码数据工作正常,我可以访问data-id属性,但是一旦我动态生成它,无论刷新或重新创建父项,点击事件似乎都不起作用。 html已被更改,因为我可以在检查元素时看到值。样式似乎没问题。

我在这里看到了很多关于重新创建对象和刷新列表的例子,但似乎都没有。 如果我注释掉javascript以生成列表项,则硬编码项可以正常工作。 我想我错过了一些非常简单的东西,但我无法理解它可能是什么。

HTML:

<div data-role="page" id="testpage" data-theme="c">
    <div data-role="content" id="testpage_content" data-theme="c">
        <div id="listview_container">
            <ul data-role="listview" id="someListView">
                <li data-id="4444">
                    <a href="#"><p>hard-coded data-id=4444</p></a>
                </li>
                <li data-id="5555">
                    <a href="#"><p>hard-coded data-id=5555</p></a>
                </li>
            </ul>
        </div>
    </div>
</div>

jquery的:

$(document).on('pageinit','#testpage',function(){
    $('#someListView li').click(function() {
        alert($(this).attr('data-id'));
    });
});


$(document).on('pagebeforeshow','#testpage',function(){
    var arrayData = new Array("4444","5555"); //usually generate this data from ajax call
    $("#someListView").empty(); //empty hard-coded list items

    $.each(arrayData, function(key, value){  
        $("#someListView").append(
            '<li data-id="'+ value +'">'+'
            <a href="#"><p>clicking this should alert: '+ value +'</p></a>'+
            '</li>'
        );                          
        $('#someListView').listview('refresh');
    });
    $('#listview_container').trigger('create');
});

0 个答案:

没有答案