选择所有相同的类元素并存储在字符串中

时间:2012-01-26 09:32:32

标签: jquery html ajax

我有一个页面,其中有用户留下的评论,每个帖子都有自己的ID存储在隐藏的输入标签中,以便动态获取我需要知道所有帖子的ID的最新帖子并放置它们在字符串中,每个id都需要用逗号分隔。

例如......

HTML标记

<div class='msgPost'><div class='msgContainer'>
    <input class='activityId' type='hidden' value='579'>
    <span>
        <div class='name'>Bob</div>nm
    </span>
</div>

<div class='msgPost'><div class='msgContainer'>
    <input class='activityId' type='hidden' value='578'>
    <span>
        <div class='name'>Tom</div>4
    </span>
</div>

<div class='msgPost'><div class='msgContainer'>
    <input class='activityId' type='hidden' value='577'>
    <span>
        <div class='name'>John</div>123
    </span>
</div>

Jquery代码

function getLatestActivities(){
   var ignoreMessagesColl = $("input.activityId").val();

   $.ajax({
      traditional: true,
      dataType: "json",
      type: "GET", url: "include/process.php", 

      data:{
         getLatestActivity: "true",
         toUser: "4",
         ignoreMessages: ignoreMessagesColl
      },

      success: function(data){
         $.each(data, function (i, elem) {
            $('.commentMessage').after(elem.value);
         });              
      }
   });   
}

目前变量 ignoreMessagesColl 只找到.activityid的第一个类实例,其值为“579”,但实际上我需要ignoreMessageColl来获得值“579,578,577”< / p>

4 个答案:

答案 0 :(得分:13)

val仅返回第一个值,请尝试mapgetjoin

var ignoreMessagesColl = $("input.activityId").map(function() {
        return this.value;
    }).get().join(",");

这是做什么的:

  1. map循环遍历所有匹配的元素,并构建一个包含迭代器函数返回的jQuery包装数组。

  2. get从jQuery包装器获取底层数组(我不知道为什么map返回一个jQuery包装器。)

  3. join将数组的元素组合成一个用给定分隔符分隔的字符串。

  4. 示例数据的最终结果是ignoreMessagesColl"579,578,577"

答案 1 :(得分:2)

var values = [];    

$('.msgContainer input.activityId').each(function(){

    values.push($(this).val());
});

console.log(values);

答案 2 :(得分:2)

你应该:

var arr = [], str;
$("input.activityId").each(function(){
   arr.push(this.value);
});
str = arr.join(',');

答案 3 :(得分:1)

var ignoreMessagesCol = $("input.activityId").map(function() {
   return $(this).val();
}).get().join(", ");

.map()将为选择器中的每个元素执行内部匿名函数,并返回一个jQuery对象集合。 .get()将使它成为一个数组。 .join()将使它成为逗号分隔的字符串