javascript - 怎么为通过函数添加的a元素添加点击函数并获取它的值?
高洛峰
高洛峰 2017-04-10 16:07:41
[JavaScript讨论组]

使用jquery读取json文件并往列表中添加之后需求在列表中点击每个文件可以获得它的值。
json:

{
    people : 
    [
        { name : "zhangsan" }
        { name : "lisi")
    ]
}

jquery代码:

$.getJSON('file.json', function(data) {
    var people = data.people;
    for (i=0; i<people.length; i++) {
        var li = "<li><a href='#' class=''people'>" + people[i].name + "</a></li>";
        $('ul#people').append(li);
    }

目前已经成功添加了列表,但是如果将方法设置如下:

$('a.people').click(function() {
    alert($(this).attr('value');
}

弹出的并会是undefined(我在原代码中设置过了value=people[i].name),其他的尝试包括val, text弹出的会是一段不明所以的jquery库的原码。

但是我希望获取的就是它所对应的people[i].name,并且只希望通过a元素而不是其他的像按钮之类的元素获得这个值,应该怎么实现?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
高洛峰

像这种动态添加的结构建议使用事件代理,可以在ul上代理

$('#people').on('click','.people',function(){
    alert($(this).text());//not attr('value');
});

补充

for (var i=0; i<people.length; i++) {
    var li = "<li><a href='#' class=''people'>" + people[i].name + "</a></li>";
    $('ul#people').append(li);
}

这种写法太耗性能了,改下

var content='';
for (var i=0; i<people.length; i++) {
    content + = "<li><a href='#' class='people'>" + people[i].name + "</a></li>";        
}
$('#people').append(content);
ringa_lee

用live来绑定事件

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号