使用循环获取所有元素值

时间:2013-10-12 12:52:56

标签: jquery

我有这个HTML:

<ul id="div_choices" class="sortable ui-sortable">
  <li data-original-title="" title="">
    <div class="input-prepend input-append">
      <input class="input_choice_text" type="text" placeholder="متن گزینه مورد نظر را وارد کنید">
    </div>
  </li>
  <li data-original-title="" title="">
    <div class="input-prepend input-append">
      <input class="input_choice_text" type="text" placeholder="متن گزینه مورد نظر را وارد کنید">
    </div>
  </li>
</ul>

我想用jQuery获取输入文本。我写了这段代码,但它不起作用:

alert($("#div_choices > li:first > input").val());

alert($("#div_choices li").first().children("div .input_choice_text").val())

工作:

$('#div_choices li:first div .input_choice_text').val()

现在,我希望通过for循环获取所有输入值,我使用childreneqnth-child,但它们都不起作用,为什么会这样?

var node = $("#div_choices");
var node2 = $("#div_choices li:first div .input_choice_text");
for(var i=1;i<=node.children('li').length;i++) {
  var text = node2.next().children("div .input_choice_text").val();
  alltext += text + "\r\n";
}

5 个答案:

答案 0 :(得分:2)

尝试jQuery.each()

$("#div_choices .input_choice_text").each(function() {
    alltext += this.value + "\r\n";
});

答案 1 :(得分:2)

您可以使用.map()方法:

var arr = $('#div_choices .input_choice_text').map(function(){
     return this.value;
}).get();

arr是一个数组,如果你需要一个字符串,你可以使用.join()方法将数组转换为字符串:

var str = arr.join("glue");

.map()使用您可以执行的for循环遍历所选元素:

var $nodes = $("#div_choices .input_choice_text"),
    arr = [];

for(var i = 0; i < $nodes.length; i++) {
   arr.push( $nodes.eq(i).val() );
}

// arr.join(',');

答案 2 :(得分:0)

var node = $("#div_choices");
            var alltext = "";
            var mynode=$("#div_choices li:first div input");

            for(var i=1;i<=node.children('li').length;i++)
            {
                var text = mynode.val();
                alltext += text + "\r\n";

                var parent = mynode.parent().parent();
                mynode = parent.next().find('div input');
            }

答案 3 :(得分:0)

  

使用jquery eq方法:

var $ul=$('ul#div_choices');
var $li=$ul.children();
var len=$li.length;
while(len){
    --len;
    console.log($li.eq(len).find('input').val());
}
  

使用jquery children方法:

while(len){
    --len;
    console.log($($li[len].children[0].children[0]).val());
}

对你有帮助吗?

答案 4 :(得分:0)

var arr = $('#div_choices').find('.input_choice_text').map(function(){
     return this.value;
}).get().join('\r\n');

这将返回一个字符串,其中包含所有输入元素(具有类input_choice_text)的值,每个元素都带有新链接,我认为您就是这样做的。我们可以记录这个

console.log(arr);

并且可以检查空白值:

var arr = $('#div_choices').find('.input_choice_text').map(function(){
    if(this.value != '') {
       return this.value;
    }
}).get().join('\r\n');