Как получить максимальный идентификатор элемента DOM с неупорядоченным шаблоном - PullRequest
0 голосов
/ 15 июля 2011

У меня есть неупорядоченный список элементов формы с идентификаторами

 <ul class="sortable" id="userForm">
<li style="visibility: hidden;" class="ui-state-default">Test</li>
<li style="display: list-item;" class="ui-state-default">
<div class="control">
  <label class="">Label Here</label>
  <textarea readonly="readonly" id="4"></textarea>
  <div class="delete" style="display: inline;"><sup>x</sup></div>
  <div class="properties txtarea" style="display: inline;">Properties</div>
</div>
</li>
<li style="display: list-item;" class="ui-state-default ">
<div class="control">
  <label class="">Label Here</label>
  <input readonly="readonly" id="3" name="txt" value="" type="text">
  <div class="delete" style="display: inline;"><sup>x</sup></div>
  <div class="properties txtbox" style="display: inline;">Properties</div>
</div>
  </li>
  <li style="display: list-item;" class="ui-state-default">
<div class="control">
  <label>&nbsp;</label>
  <input id="2" type="radio">
  <span class="controlText">Radio Button</span>
  <div class="delete" style="display: inline;"><sup>x</sup></div>
  <div class="properties radio" style="display: inline;">Properties</div>
</div>
 </li>
<li style="display: list-item;" class="ui-state-default">
<div class="control">
  <label>&nbsp;</label>
  <input id="1" type="checkbox">
  <span class="controlText">Check Box</span>
  <div class="delete" style="display: inline;"><sup>x</sup></div>
  <div class="properties chkbox" style="display: inline;">Properties</div>
</div>
</li>
</ul>

Как я могу получить максимальный идентификатор из этих элементов. Идентификаторы не в определенном порядке, но классы и формат элементов одинаковы.

Ответы [ 3 ]

4 голосов
/ 15 июля 2011

попробуйте следующий код:

var maxId = 0;
$(".sortable *[id]").each(function() {
    if(maxId < $(this).attr("id")){ maxId = $(this).attr("id")}
});

alert("max id value is: "+maxId);

Демо: http://jsfiddle.net/5UZTD/

4 голосов
/ 15 июля 2011

Примерно так может работать

var max = 0;
$('.control').each(function(i,n){
 // var check = $(n).children('input').attr('id')/*.prop() if jquery 1.6*/
  var check = $(n).children('.the_id').attr('id')/*.prop() if jquery 1.6*/
  if(check>max) max = check;
});

Вот jsfidle версия

0 голосов
/ 15 июля 2011

на основе ответа Вала

var max = 0;
$('.control *[id]').each(function(i,n){
  var check = $(n).attr('id')/*.prop() if jquery 1.6*/
  if(check>max) max = check;
});

селектор находит любой элемент с атрибутом id .

...