2012-12-22 73 views
0

我正在嘗試使用datetime屬性過濾某些html元素。我的HTML元素看起來像Javascript:從函數返回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 arrayyes被打印9次。

所以,我的問題是爲什麼我的filter函數沒有返回父html標記。

+1

您從您傳遞給'地圖()' –

+0

功能缺失'return'如果你想比較日期,你也會失去getTime()來獲取時間戳。你正在重新清理時間變量。 – adeneo

回答

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

應該

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

你缺少return語句。

+0

謝謝。我相信我現在應該睡覺。 – ronnie

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/

+0

酷,不知道這個。 – ronnie

+1

'map()'可能在jQuery中內部使用'filter()',但是你想要的是元素,所以這個方法對我來說最有意義 – charlietfl