如何在jQuery.each()循环中对返回的文本使用.slice()?

如何在jQuery.each()循环中对返回的文本使用.slice()?,jquery,each,Jquery,Each,我似乎无法做到这一点,我尝试了许多不同的组合。我要做的就是从.each()迭代器返回的文本中获取4和5个字符,然后再将其写入数组 var timeItems = []; $("div[class*='field-name-field-time-']").each(function (i, e) { $(this).text().slice(3,5); timeItems.push($(e)); }); 有什么想法吗 谢谢 var time

我似乎无法做到这一点,我尝试了许多不同的组合。我要做的就是从.each()迭代器返回的文本中获取4和5个字符,然后再将其写入数组

    var timeItems = [];
    $("div[class*='field-name-field-time-']").each(function (i, e) {
        $(this).text().slice(3,5);
        timeItems.push($(e));
    });
有什么想法吗

谢谢

var timeItems = [];
$("div[class*='field-name-field-time-']").each(function (i, e) {
    var text = $(e).text().slice(3,5);
    timeItems.push(text);
});
  • 尝试使用
    每个
    参数中的第二个参数,而不是
  • 将切片指定给变量,然后返回push。()
  • 经常会提出这样的问题:“如果这是元素,为什么会有第二个DOM元素参数传递给回调?” 无论是有意还是无意,执行上下文都可能发生变化。如果始终使用关键字this,很容易让我们自己或其他阅读代码的开发人员感到困惑

    试试这个

    var timeItems = [];
    $("div[class*='field-name-field-time-']").each(function (i, e) {
    
        var text = $(e).text().substring(3,5); //Dont forget to store them somewhere
        timeItems.push($(e));
    });
    
    .slice()。检查下面的JSFIDLE,并取消注释使用slice进行尝试的行

    另外,您将返回到阵列的内容是什么?我假设你指的是对象,但如果你想返回字符,你应该将
    文本
    推到
    时间项
    ,而不是
    $(e)


    编辑:

    好的,您的文本是否像此文本一样位于内部,是否要将元素或文本推送到时间项,因为当前您只需将其保存,现在就可以在此处为我提供您的问题的代码笔/plunkr?谢谢,Stefan,您的解决方案有效,但我无法获取字符串,因为它在写入数组时改变了位置。现在效果很好。谢谢