2017-05-18 14 views
-1

私はRazorを使用してASP.NET MVC Webページを開発しています。バージョンはMicrosoft.AspNet.Mvc 5.2.3、Microsoft.AspNet.Razor 3.2.3、.NET Framework 4.7、C#およびJavascriptです。最も価値の高いIDを見つける方法

ビューには、これらの行を持つテーブルを持っています。

<tr id="level01_01"> ... </tr> 
<tr id="level01_02"> ... </tr> 
<tr id="level01_03"> ... </tr> 

は、私は、最新の行のためのIDですjQueryに知っておく必要があります。上記の例では、level01_03です。

私はこれらの行をC#で作成するので、最新のidで隠された入力を値として追加できます。

入力を隠さずに見つけたい場合は、どうやってそれを行うのか分かりません。このSO answerでは、私は他よりも大きな値をIDを取得する方法を見つけたが、これは私が探しているものではありません:jQueryの

var divs = $('.fade').map(function(){ 
       if (this.id.replace('div','') > 35) return '#'+this.id; 
      }).get().join(','); 
$(divs).fadeTo("slow", 0.6); 

その後、

<div id="div22" class="fade">text</div> 
<div id="div35" class="fade">text</div> 
<div id="div40" class="fade">text</div> 

しかし、これはIS私が探しているものではありません。

私は最大の番号でIDを取得するために探しています。この例では、idはlevel01_03です。

IDが最大のIDを取得するにはどうすればよいですか?

+5

$( "tr")。last()。attr( "id")? – Esko

+0

downvotingをありがとうと理由を教えてくれてありがとう。 – VansFannel

答えて

1

あなたは最高のid値を返すためにこれを使用することができます。

var ids = $("tr[id^='level01_']").map(function() { 
 
    return parseInt(this.id.replace("level01_", ""), 10); 
 
}).get(); 
 

 
var highest = Math.max.apply(Math, ids); 
 
console.log(highest)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr id="level01_01"> ... </tr> 
 
    <tr id="level01_02"> ... </tr> 
 
    <tr id="level01_03"> ... </tr> 
 
</table>

0

使用jQuery.filter

var divs = $('.fade').filter(function() { 
 
    return (+this.id.replace('div', '') > 35); 
 
}); 
 

 
$(divs).fadeTo("slow", 0.6);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="div22" class="fade">text</div> 
 
<div id="div35" class="fade">text</div> 
 
<div id="div40" class="fade">text</div>

フィルタ取得するにはIDが:

var divs = $('.fade').filter(function() { 
 
    return (+this.id.replace('div', '') > 35); 
 
}).map(function() { 
 
    return this.id; 
 
}); 
 

 
console.log(divs.get());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="div22" class="fade">text</div> 
 
<div id="div35" class="fade">text</div> 
 
<div id="div40" class="fade">text</div>

+0

ありがとうございますが、これは私が探しているものではありません。 – VansFannel

+0

@VansFannel - 編集に意味がありますか? – Rayon

+0

私は最大の番号を持つIDを探しています。他のIDより大きい数値ですが、35より大きいIDを持つIDではありません。 – VansFannel

1

これにはいくつかの方法があります。

まず、最高idは最後のものになると仮定して、あなただけのtr:lastを取得し、それがidだ読み取ることができます。あるいは、

var lastId = $('table tr:last').prop('id').spit('_')[1]; 

値が増分されている場合は、あなただけの合計数をカウントすることができますtr要素:彼らは順番になっていない場合

var lastId = $('table tr').length; 

最後に、あなたが値の配列を構築するためにmap()を使用することができ、その後、Math.max GEへ最高のT:

var highestId = Math.max.apply(Math, $('table tr').map(function() { 
 
    return parseInt(this.id.split('_')[1], 10); 
 
}).get()); 
 

 
console.log(highestId);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr id="level01_10"></tr> 
 
    <tr id="level01_221"></tr> 
 
    <tr id="level01_3"></tr> 
 
</table>

+0

ありがとうございます。異なるIDのセットから最大のIDを見つけるために修正したい場合。私は 'level01_01'、' level01_02'、 'level02_01'、' level02_02'、 'level02_03'のようになります。もし私が 'level01'や' level02'や他の文字列( 'levelxx')の最大のIDを取得したいのならどうしたらいいですか?ありがとう。 – VansFannel

0

この関数は、最高値のIDを持つ行に$elを設定します。

var $el, max = 0; 

$("tr").each(function() { 
    var i = parseInt(this.id.replace(/.*_(\d+)$/, "$1")); 

    if (i > max) { 
    max = i; 
    $el = $(this); 
    } 
}); 
0

あなたは、単にのような最後のTR IDを取得することができますよりも、あなたのTRはIDを昇順た場合:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html lang="en"> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
     <title>Title Goes Here</title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
     <script> 
     $(document).ready(function() { 
      alert($("#tbl tr:last").attr("id")); 
     }); 
     </script>  
    </head> 
    <body> 
<table class="data" id="tbl"> 
    <tr id="level01_01"> 
    <th>Entry Header 1</th> 
    <th>Entry Header 2</th> 
    <th>Entry Header 3</th> 
    <th>Entry Header 4</th> 
    </tr> 
    <tr id="level01_02"> 
    <td>Entry First Line 1</td> 
    <td>Entry First Line 2</td> 
    <td>Entry First Line 3</td> 
    <td>Entry First Line 4</td> 
    </tr> 
    <tr id="level01_03"> 
    <td>Entry Line 1</td> 
    <td>Entry Line 2</td> 
    <td>Entry Line 3</td> 
    <td>Entry Line 4</td> 
    </tr> 
    <tr id="level01_04"> 
    <td>Entry Last Line 1</td> 
    <td>Entry Last Line 2</td> 
    <td>Entry Last Line 3</td> 
    <td>Entry Last Line 4</td> 
    </tr> 
</table> 

</body> 
</html> 
0

あなたは以下のコードのような文字列としてidを比較することによって、達成することができます:

var max = ''; 
 
$("#test tr").each(function() { 
 
    if (this.id.localeCompare(max) > 0) { 
 
    max = this.id; 
 
    } 
 
}); 
 
console.log(max)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="test"> 
 
    <tr id="level01_01"> ... </tr> 
 
    <tr id="level01_02"> ... </tr> 
 
    <tr id="level01_153"> ... </tr> 
 
    <div id="res"></div> 
 
</table>

関連する問題