Meteor - jQuery nth-child选择器

时间:2014-06-25 12:10:52

标签: jquery jquery-selectors meteor

同时获取动态表单列表的值。

我在template.js文件中有以下代码。

var count = $("#marker").children().length;

var partList = [];

for(var x=1; x<count+1; x++){

  var fName = $("#marker.parts:nth-child(x)").find('input.fName').val();
  var lName = $("#marker.parts:nth-child(x)").find('input.lName').val();
  var eMail = $("#marker.parts:nth-child(x)").find('input.eMail').val();
  var date = $("#marker.parts:nth-child(x)").find('input.datepicker').val();

  object = {fName: fName, lName: lName, eMail: eMail, date: date};
  partList.push(object);
}
return partList;

表单中充满了字符串值。

当我运行时 - 在浏览器控制台中,错误显示为: 未捕获错误:语法错误,无法识别的表达式:: nth-child

但是,如果我将jQuery语句直接写入浏览器控制台。

e.g. $("#marker.parts:nth-child(1)").find('input.fName').val();
瞧瞧瞧。表格值正确选取。并且在表单中的每个输入字段上进行测试,它不会破坏并获取正确的表单值。

请帮助我了解我哪里出错了。

由于

html模板的相关部分:

<template name="createNewEvent">
<form id="createForm">
<!--......other form components are here....-->
<section id="marker">
{{#each friendInput}}
    <div class='parts'>Name of Participant : <input type='text' class="fName"
        placeholder='First Name'> <input type='text' class="lName" placeholder='Last
        Name'> Email Address : <input id="searchBox" type='text' placeholder='email           
        address of friend' class="eMail"> Date for Hosting: {{> add_part}}</div>
{{/each}}
</section>
</form>
</template>

<template name="add_part">
    <input class="datepicker" id="date-id" name="date">
</template> 

friendInput助手只是返回一个具有正确数字的数组来迭代。

1 个答案:

答案 0 :(得分:1)

由于x是变量,因此请像这样使用

for(var x=1; x<count+1; x++){

  var fName = $("#marker.parts:nth-child("+x+")").find('input.fName').val();
  var lName = $("#marker.parts:nth-child("+x+")").find('input.lName').val();
  var eMail = $("#marker.parts:nth-child("+x+")").find('input.eMail').val();
  var date = $("#marker.parts:nth-child("+x+")").find('input.datepicker').val();

  object = {fName: fName, lName: lName, eMail: eMail, date: date};
  partList.push(object);
}

在您的代码x中,我们只会将其视为字符串x。它不会在那里充当变量。这就是为什么它显示错误