2014-12-04 57 views
0
<p>first - 2014</p> 
<p>a - 2014</p> 
<p>a - 2014</p> 
<p>a - 2013</p> 
<p>a - 2013</p> 

$("p").each(function(){ 
    var str = $(this).text(); 
    var patt = /\d+$/; 
    var res = str.match(patt); 

    if (res == 2014){ 
     var arr = []; 
     arr.push($(this)); 
     console.log(arr[0]) 
    } 
}); 

我试图让第一款至极有2014年 - 但歌厅所有元素至极有2014年选择其中包含数字第一要素动态 - 2014年

什么我做错了,我怎么能解决这个问题?

+1

只需使用'filter()'。注意:你继续声明一个本地数组,将结果推送到它然后丢弃它。 – 2014-12-04 17:07:05

+0

要找到第一个,需要在找到其中包含“2014”的段落后停止循环。将日志记录到控制台后使用return。 – Marcel 2014-12-04 17:10:05

+0

可以满足您的需求:'$('p:contains(“2014”):eq(0)')' – 2014-12-04 17:22:49

回答

2

只需使用filter(),因为这通常更有用。如果你想你第一次然后就打电话first()的结果:

http://jsfiddle.net/TrueBlueAussie/zxqegsuh/3/

var ps = $("p").filter(function(){ 
    var str = $(this).text(); 
    var patt = /\d+$/; 
    var res = str.match(patt); 

    return (res == 2014); 
}); 
alert(ps.length); 

// if you want the first only 
ps.first().css('color', 'red'); 

可降低到:http://jsfiddle.net/TrueBlueAussie/zxqegsuh/4/

var ps = $("p").filter(function(){ 
    return $(this).text().match(/\d+$/) == 2014; 
}); 

注意:保持声明一个局部阵列,推结果到然后把它扔掉。这似乎有点不对:)

+0

它仍然选择三段 - 不是第一段; – Pipa 2014-12-04 17:12:48

+1

@Pipa:它已经更新了。请刷新并重新阅读:) – 2014-12-04 17:13:35

+0

谢谢你,它的工作 – Pipa 2014-12-04 17:15:12

相关问题