Javascript 从给定行中选择所有属性值(jQuery)

Javascript 从给定行中选择所有属性值(jQuery),javascript,jquery,html,Javascript,Jquery,Html,我的结构如下: <ul id="myTags""> <li> <span class="tagit-label">AA</span> <a> <span class="text-icon">×</span> <span class="ui-icon ui-icon-close"></span> </a>

我的结构如下:

<ul id="myTags"">
   <li>
     <span class="tagit-label">AA</span>
     <a>
        <span class="text-icon">×</span>
        <span class="ui-icon ui-icon-close"></span>
     </a>
     <input type="hidden" name="tags" value="AA" style="display:none;">
   </li>
   <li>
     <span class="tagit-label">BB</span>
     <a class="tagit-close">
        <span class="text-icon">×</span>
        <span class="ui-icon ui-icon-close"></span>
     </a>
     <input type="hidden" name="tags" value="BB" style="display:none;">
   </li>
   ....
</ul>
如何从跨行的所有value属性中收集值

试试这个

var textArr = [];
$(".tagit-label").each(function(){
  textArr.push($(this).text());
})
console.log(textArr.join());
试试这个

var textArr = [];
$(".tagit-label").each(function(){
  textArr.push($(this).text());
})
console.log(textArr.join());
这应该起作用:

$('#myTags input[name="tags"]').map(function () {
    return $(this).val();
}).get().join(",");
这应该起作用:

$('#myTags input[name="tags"]').map(function () {
    return $(this).val();
}).get().join(",");
使用

演示:

使用

演示:

您可以执行以下操作:

var arr = $('#myTags .tagit-label').map(function () {
    return $(this).text();
}).get().join(",");

console.log(arr);
您可以这样做:

var arr = $('#myTags .tagit-label').map(function () {
    return $(this).text();
}).get().join(",");

console.log(arr);


这是我迟来的答复。为了好玩,我尝试了javascript 1.8数组缩减方法

var string = [].reduce.apply( $('.tagit-label') , [ function( ar , n ){          
     return ar.push( $(n).text() ) && ar ;
},[] ] ).join();
或者干脆

var string = [].reduce.call( $('.tagit-label') , function( ar , n ){          
     return ar.push( n.innerHTML ) && ar ;
},[] ).join();

希望这将有助于学习更多的reduce方法

这是我迟来的回答。为了好玩,我尝试了javascript 1.8数组缩减方法

var string = [].reduce.apply( $('.tagit-label') , [ function( ar , n ){          
     return ar.push( $(n).text() ) && ar ;
},[] ] ).join();
或者干脆

var string = [].reduce.call( $('.tagit-label') , function( ar , n ){          
     return ar.push( n.innerHTML ) && ar ;
},[] ).join();

希望这将有助于学习更多的reduce方法

您可以使用.call而不是.apply,这样您就不需要将参数封装在数组中,然后您也可以使用空字符串作为种子,并执行[].reduce.call$'.tagit label',函数,n{return s s.concat$n.text;};。。。哦,除了OP需要逗号。错过了。可以添加到concat中,但是您需要修剪尾部,@squint。。更新答案。。s、 concat$n.text;并添加逻辑来查找要修剪掉的字符串结尾,我认为这会降低可读性!我想这只是偏好的问题。[].reduce.call$'input[name=tags]',函数,n{返回s.concatn.value;},.slice0,-1。不过,如果您要推进到一个数组中,那么.map将更有意义。但是+1表示.reduce。您可以使用.call而不是.apply,这样您就不需要将参数包装在数组中,然后您还可以使用空字符串作为它的种子,并执行[].reduce.call$'.tagit label',函数,n{return s s.concat$n.text;};。。。哦,除了OP需要逗号。错过了。可以添加到concat中,但是您需要修剪尾部,@squint。。更新答案。。s、 concat$n.text;并添加逻辑来查找要修剪掉的字符串结尾,我认为这会降低可读性!我想这只是偏好的问题。[].reduce.call$'input[name=tags]',函数,n{返回s.concatn.value;},.slice0,-1。不过,如果您要推进到一个数组中,那么.map将更有意义。但是+1表示。无论如何都要减少。