1

我有这个 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循环获取所有输入值,我使用了children, eqnth-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";
}
4

5 回答 5

2

尝试jQuery.each()

$("#div_choices .input_choice_text").each(function() {
    alltext += this.value + "\r\n";
});
于 2013-10-12T12:56:37.483 回答
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(',');
于 2013-10-12T12:56:44.230 回答
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 子方法:

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

对你有帮助吗?

于 2013-10-12T13:43:46.410 回答
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');
于 2013-10-12T14:28:22.840 回答
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');
            }
于 2013-10-12T13:07:48.377 回答