1

我正在尝试使用datetime属性过滤某些 html 元素。我的 html 元素看起来像

<time title="Sat Dec 22 16:29:21 2012 UTC" datetime="2012-12-22T16:29:21+00:00">4 hours</time>

现在,我正在做的是

var x = $("p time").map(function() { filter(this);})

我的过滤功能看起来像:

function filter(var1){

  var now = new Date();
  var time = $(var1).attr("datetime");

  var time = new Date(time);
  var diff = now - time;

  if( diff < 7200000){

   console.log("yes");
   return $(var1).parent().parent();

  }
}

当我运行上面的代码时,我得到x一个empty array并且yes被打印了 9 次。

所以,我的问题是为什么我的filter函数没有返回父 html 标记。

4

2 回答 2

2
var x = $("p time").map(function() { filter(this); });

应该

var x = $("p time").map(function() { return filter(this); });

你错过了 return 声明。

于 2012-12-22T22:07:58.203 回答
1

使用 jQueryfilter()方法

var p_parents_I_want = $("p time").filter(function() {
    var now = new Date();
    var time = $(this).attr("datetime");
    time = new Date(time);/* don't declare same var twice*/
    var diff = now - time;

    return diff < 7200000

}).parent().parent()

通常可以替换parent().parent()使用closest(selector)

API参考: http ://api.jquery.com/filter/

于 2012-12-22T22:12:15.763 回答