jquery的children用法问题

今天写代码时碰到一个问题

var html = '<div class="accompany_extra">\n' +
            '                    <div class="accompany_extra_title">\n' +
            '                        <span>同行人' + accompany_total +'</span>\n' +
            '                        <span class="delete">删除</span>\n' +
            '                    </div>\n' +
            '                    <div>\n' +
            '                        <input type="text" placeholder="请输入同行人姓名" lang="同行人姓名" name="name">\n' +
            '                    </div>\n' +
            '                    <div>\n' +
            '                        <input type="text" placeholder="请输入同行人证件号" lang="同行人证件号" name="id">\n' +
            '                    </div>\n' +
            '                    <div>\n' +
            '                        <input type="text" placeholder="请输入同行人联系方式" lang="同行人联系方式" name="contact">\n' +
            '                    </div>\n' +
            '                    <div>\n' +
            '                        <input type="text" placeholder="请输入同行人关系" lang="同行人关系" name="relation">\n' +
            '                    </div>\n' +
            '                    <div>\n' +
            '                        <input type="text" placeholder="请输入备注信息" lang="备注信息" name="remark">\n' +
            '                    </div>\n' +
            '                    <div class="add_accompany">\n' +
            '                        <p>+增加同行人</p>\n' +
            '                    </div>\n' +
            '                </div>'

在页面点击一次增加便会添加一次该html,遍历时却遇到了问题。刚开始我使用的是以下代码

$('.accompany_extra').each(function (){
            var partner = {}
            partner.realname = $(this).children('div:nth-child(2) input').val()
            partner.id_num = $(this).children('div:nth-child(3) input').val()
            partner.contract_info = $(this).children('div:nth-child(4) input').val()
            partner.relation_info = $(this).children('div:nth-child(5) input').val()
            partner.note = $(this).children('div:nth-child(6) input').val()
            // console.log('partner:')
            // console.log(partner)
            partners.push(partner)
            // console.log(partners)
        })

获取到的值都是undefined,查了下资料猜测应该是children只能获取直接子元素,不能在参数中调用更底层的元素,如果要调用input,应该写成该形式

partner.realname = $(this).children('div:nth-child(2)').children('input').val()

实测该写法可以获取到值,但整体该写法存才隐患且不美观,突然想起find方法,只要在input标签中添加对应的name就可以调用了,find方法可以直接搜索所有的子元素不用考虑层级关系,而且不用担心会有隐患,于是将代码改成如下

$('.accompany_extra').each(function (){
            var partner = {}
            $(this).children('div:n')
            partner.realname = $(this).find('input[name="name"]').val()
            partner.id_num = $(this).find('input[name="id"]').val()
            partner.contract_info = $(this).find('input[name="contact"]').val()
            partner.relation_info = $(this).find('input[name="relation"]').val()
            partner.note = $(this).find('input[name="remark"]').val()
            // console.log('partner:')
            // console.log(partner)
            partners.push(partner)
            // console.log(partners)
        })

运行发现可以使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值