.index()似乎不适用于动态创建的可折叠列表视图

时间:2014-05-26 04:55:43

标签: jquery listview dynamically-generated

您好Stackoverflow,

我正在尝试获取在listview中单击的元素的编号,如下所示:

$('#list_task0').on('click', $('li'),function( event, ui ) {


    //alert($('#list_task0:last-child').text());
    //alert($('#list_task0'.size());

    day_to_edit = $(this).index();

    }); 

列表生成如下:

$('<div>').attr({'id':'task_'+task_count+'','data-role':'collapsible'}).html('<h2>Task : '+task_name+'</h2><h1><ul id=list_task'+task_count+' data-role="listview" data-theme="b" data-icon="false"></ul></h1>').appendTo('#task_recapitulator');
    $('<li>').attr({}).html('<a href="#">&nbsp;Project : '+curr_proj+'</a>').appendTo('#list_task'+task_count+'');
    $('<li>').attr({'data-theme':'a'}).html('<a href="#">&nbsp;Shift/On Call : '+curr_shift+'</a>').appendTo('#list_task'+task_count+'');


       for(var j=0;j<7;j++) {
        $('<li>').attr({'data-theme':''+theme(j)+''}).html('<a href="#">&nbsp;Day '+(j+1)+' hours : <span class="ui-li-count">'+hours[j]+'</span></a>').appendTo('#list_task'+task_count+'');   

       }

    task_count++;


    $('#new').trigger('create');

我错过了什么?每次返回的索引为0,创建的列表大小为1,只有一个子节点。但是,如果我检查它,它似乎是一个常规列表,li标签正确嵌套在里面......我想.appendTo创建了一个新的孩子?

P.S。:我只是听#list_task0点击进行调试

2 个答案:

答案 0 :(得分:0)

使用li而不是$(li),并且这个不是字符串它是对象,删除双引号

$('#list_task0').on('click', 'li',function( event, ui ) {
    day_to_edit = $(this).index();
}); 

答案 1 :(得分:0)

您正在调用day_to_edit = $('this').index();,这意味着this是一种标记类型,但实际上它应该是当前html元素的一个实例。

所以称之为:

day_to_edit = $(this).index();