Javascript:从函数返回html元素

时间:2012-12-22 22:03:34

标签: javascript jquery

我正在尝试使用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();

  }
}

当我运行上述代码时,xempty arrayyes打印9次。

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

2 个答案:

答案 0 :(得分:2)

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

应该是

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

你错过了回复陈述。

答案 1 :(得分:1)

使用jQuery filter()方法

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/