如何在jQuery .each循环外部导出循环内的索引变量?
问题原因
你在$.each的回调函数里用var声明的new_recipients_count是局部变量,作用域仅限这个回调函数内部,循环结束后外部根本访问不到它的值。
解决方案
方案1:把变量提到循环外面声明
把new_recipients_count的声明移到$.each循环外,循环里只更新它的值,这样循环结束后外部就能拿到最后一次循环的结果:
var new_recipients_count = 0; $.each($("#recipients .address"), function(i, o) { new_recipients_count = i + 1; }); var placeholder_count = new_recipients_count; var newRow = '<input type="text" name="Email_Address" placeholder=" ' + placeholder_count + ' ">';
方案2:直接取元素总数(更简洁高效)
其实你要的最终值就是#recipients .address元素的总个数,没必要遍历循环,直接用jQuery的length属性就能搞定:
// 现有地址的总数量,对应你原来循环最后一次的i+1 var placeholder_count = $("#recipients .address").length; // 如果是要新输入框的序号(比如现有3个,新的是第4个),就加1: // var placeholder_count = $("#recipients .address").length + 1; var newRow = '<input type="text" name="Email_Address" placeholder=" ' + placeholder_count + ' ">';
这样代码更简洁,还省了循环遍历的开销。
内容的提问来源于stack exchange,提问作者Nomada
相关产品推荐
相关产品推荐

