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();

  }
}

上記のコードを実行するとxempty arrayandyesが 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 に答える