在这个for循环中,如何捕获两个消息而不是只捕获第一个消息? (jQuery的)

时间:2013-10-02 21:04:08

标签: jquery loops for-loop each

所以我试图完成以下

  • 使用manager-msg
  • 类循环遍历所有td
  • 将每个文本保存到变量/数组
  • 执行拆分并创建新文本
  • 替换每个manager-msg td
  • 的文本

目前我被困在第一部分,我可以在我的示例CodePen here中循环两次。

但是我保存了第一条消息两次,确实在第二个td中获取了文本。

enter image description here

enter image description here

HTML

<table cellpadding="10" border="1">
<tr>
    <td>Name</td>
    <td>Wants to Meet</td>
    <td >Message</td>
</tr>
<tr>
    <td>Ann</td>
    <td>Cal</td>
    <td class="manager-msg">Hi I'd love to meet Cal</td>
</tr>
<tr>
    <td>Bob</td>
    <td>Joe</td>
    <td class="manager-msg">Hi I'd like to meet Joe</td>
</tr>
</table>

的jQuery

var home_inbox_br_fix = function() {
    var num_manager_msg = $('.manager-msg').length;
    var test = [];

    for (var i = 0, num_manager_msg; i < num_manager_msg; i++) {
        test[i] = $('.manager-msg').html();
        alert('Message '+(i+1));
        alert(test);
  console.log(test);
    }
};

/*
var home_inbox_br_fix = function() {
    var test = [];
    $(".manager-msg").each(function(i){
        test.push($('.manager-msg').html());
        alert(this.id + " is the " + i + "th div with this class");
    });
    console.log(test);
};
*/

home_inbox_br_fix();

在X时刻得到代码隧道(你们怎么处理这个?

4 个答案:

答案 0 :(得分:2)

我会使用.map()来获取值。

var messages = $('.manager-msg').map(function() {
    return $(this).text();
}).get();

http://jsfiddle.net/YfpZL/

答案 1 :(得分:2)

尝试使用jQuery .each()

var home_inbox_br_fix = function() {
    var test = [];
    $('.manager-msg').each(function(i){
        test[i] = this.innerHTML;
  alert(test[i]);
    });
};

演示here

答案 2 :(得分:1)

您总是获得相同的文本,因为您在获取HTML时没有使用当前索引。如果你像这样循环它会起作用(尽管还有其他方法,如其他答案所示):

for (var i = 0, num_manager_msg; i < num_manager_msg; i++) {
    test[i] = $('.manager-msg').eq(i).html();
    // You were missing this! -----^
    alert('Message '+(i+1));
    alert(test[i]);
    console.log(test[i]);
}

答案 3 :(得分:1)

你只需要正确的索引

var home_inbox_br_fix = function() {
    var num_manager_msg = $('.manager-msg').length;
    var test = [];

    for (var i = 0, num_manager_msg; i < num_manager_msg; i++) {
        test[i] = ($($('.manager-msg')[i]).html());
        alert('Message '+(i+1));
        alert(test);
        console.log(test);
    }
};