javascript - jQuery如何检测从json文件加载的li元素的id

标签 javascript jquery html json

我有一个 ul 元素,其中包含从 json 文件加载的 li 元素。我想根据单击的 li 元素的 id 将该 json 文件内的一些数据传递到另一个页面(jquery 移动页面)。由于某种原因我无法让它发挥作用。我错过了什么?

这是我的 json 文件的结构。

    {
        "abc":
         [
            {
                "id": 1,
                "name": "Nikola Tesla",
                "image": "http://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Tesla_circa_1890.jpeg/640px-Tesla_circa_1890.jpeg",
                "price": "100"
            }
        ]
}

HTML 代码:

             <!--PAGE WITH A LIST OF SCIENTISTS -->
<div data-role="page" id="scientists">
    <div data-role="header"><h3>great scientists</h3></div>
    <div data-role="content">
            <div>
                <ul data-role="listview" data-inset="true" data-filter="true" id="namesListView"></ul>
             </div>
     </div>
 </div>

                <!--A PAGE WITH all details about selected SCIENTIST -->
<div data-role="page" id="sc">
    <div id="details_of_selected"></div>
        <img id="pic" src=""/>
</div>

我能够检测到 li 列表上的点击,但无法提取元素的 id

$(document).on('click','#namesListView',function(){
    console.log("li was clicked");
});

将数据从 json 加载到 lis

的代码
$.ajax({
    url:"scientists.json",
    dataType:"json",
    type:"get",
    cache:"false",
    success:function(data){
        console.log(data);
        $(data.abc).each(function(index,value){
            console.log(value.name);
            $("#namesListView").append("<li><a href='#sc' data-rel='dialog'>"+value.name+"</a></li>");
        });
    },
    complete: function() {
        $('#namesListView').listview('refresh');
    }
});

最佳答案

最好添加从 JSON 检索到的数组中的数据索引。

$(data.abc).each(function(index,value){
            console.log(value.name);
            $("#namesListView").append("<li data-index='" + index + "'><a href='#sc' data-rel='dialog'>"+value.name+"</a></li>");
        });

现在你可以这样做:

$(document).on('click','#namesListView',function(){
    var myIndex = $(this).data('index'); 
})

我还会添加一个变量来保存您的数据;

var abc = [];

这样您就可以获得您想要的数据。所以就其整体而言:

var abc = [];
$(document).ready(function()
{
    $.ajax({
        url:"scientists.json",
        dataType:"json",
        type:"get",
        cache:"false",
        success:function(data){
            abc = data.abc;
            $(abc).each(function(index,value){
                console.log(value.name);
                $("#namesListView").append("<li data-index='" + index + "'><a href='#sc' data-rel='dialog'>"+value.name+"</a></li>");
            });
        },
        complete: function() {
            $('#namesListView').listview('refresh');
        }
    });
});

$(document).on('click','#namesListView li',function(){ //  change here so you are clicking on an LI and not the parent UL element.
    var index = $(this).data('index');
    alert(abc[index].name);        
});

关于javascript - jQuery如何检测从json文件加载的li元素的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973257/

相关文章:

javascript - 如何从 Firebase 数据库中获取值并将其分配给 Firebase Cloud Functions 中的值?

javascript - 使用jquery切换div的高度

javascript - 使表数据出现在悬停时(javascript/jQuery 或 css)

php - Iframe 从父级获取/发布数据

javascript - 如何使用 javascript 更改事件的 Bootstrap 选项卡

javascript - 使用 lodash 按键过滤嵌套对象

c# - 通过 PageMethod 触发服务器端方法

javascript - 如何在 <div> 标签内 .append() 用户输入?

jquery - 这是进行关键字查找/密度检查的方法吗?

html - CSS - 表格中每第 n 列的样式