2014-12-04 52 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

相關問題