Jquery Mobile检测列表视图中单击了哪一行

gab*_*m10 3 javascript mobile jquery html5 jquery-mobile

我看起来高低,似乎无法在任何地方找到它.有谁知道如何在列表视图中获取行的值?这可以是从对象中的名称到索引的任何内容.现在我有一个处理水龙头的功能.我需要能够将值传递给我在转换时加载的新页面.我以为我可以在这里做到:

$('#taskListTable').delegate('li', 'tap', function () {
    console.log('clicked');
    //Insert code here to pull a value from either an index or a name and save it
});
Run Code Online (Sandbox Code Playgroud)

我想也许在哈希中这样做会很好吗?我不确定来自本地iOS开发的网络标准做法是什么.任何人有任何指针?谢谢.

这就是我填充listview的方式:

$.each(tasks, function(index, task) { 
        $taskList.append("<li><a href='taskDetails.html'>      <h3>"+task.name+"</h3><p>"+task.description+"</p></a></li>");
    });
Run Code Online (Sandbox Code Playgroud)

taskDetails.html需要任务的索引,以便我可以从服务器中提取详细信息.这样做的标准做法是什么?

Jas*_*per 9

要获取taped list-item 的索引,您可以执行以下操作:

$('#taskListTable').delegate('li', 'tap', function () {
    console.log('clicked');
    var index = $(this).index();
});
Run Code Online (Sandbox Code Playgroud)

是的,就是这样.虽然这假设该<li>元素都是兄弟姐妹.

文档.index():http://api.jquery.com/index

如果您想转换到新页面:

$('#taskListTable').delegate('li', 'tap', function () {
    console.log('clicked');
    $.mobile.changePage($(this).find('a').attr('href'), {
        data : { selectedIndex : $(this).index() }
    });
});
Run Code Online (Sandbox Code Playgroud)

这将获取新页面并将selectedIndex变量作为查询字符串参数附加,该参数设置为tapped list-item 的索引.

另外,为了能够阻止单击list-item中链接的默认行为,我会将此事件处理程序附加到链接元素:

$('#taskListTable').delegate('a', 'tap', function (event) {
    event.preventDefault();
    console.log('link clicked');
    $.mobile.changePage($(this).attr('href'), {
        data : { selectedIndex : $(this).closest('li').index() }
    });
});
Run Code Online (Sandbox Code Playgroud)