今天写代码时碰到一个问题
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)
})
运行发现可以使用。