2015-04-21 3 views
-1

Я хочу найти все текстовые поля в каждой строке столбца и получить значения атрибутов в построителе строк.Найти все текстовые поля с идентификатором с общим именем jquery

<table width="100%" class="normal" id="tblResults" border="0" cellSpacing="0" cellPadding="0"> 
    <TBODY> 
    <TR class=header> 
    <TH class=sortLPad title="Sort by URN" onclick="reSort('0')" align=left>URN </TH> 

    <TH class=sortLPad title="Sort by ShowRoom" onclick="reSort('5')" align=left>Show Room</TH></TR> 

    <P></P> 

    <TR EventId="504"> 
    <TD id=URN noWrap>23KV9878788</TD> 

    <TD id="ShowRoom" class=lPad><INPUT onfocusin=clearField(this); id="ShowRoom0" onfocusout=resetField(this); onkeypress=validate(this) maxLength=1 value=1 size=1 version="2000120420142859" elementname="ShowRoom" engineid="504" carid="244"></TD> 

    </TR> 

    <TR EventId="403"> 
    <TD id=URN noWrap>889878744</TD> 

    <TD id="ShowRoom" class=lPad><INPUT onfocusin=clearField(this); id="ShowRoom2" onfocusout=resetField(this); onkeypress=validate(this) maxLength=1 value=1 size=1 version="2000120420142859" elementname="ShowRoom" engineid="882" carid="442"></TD> 

    </TR> 

    </TBODY> 
</Table> 

<input type="button" id="continue" value="continue"> 

Вот Jquery я попытался

$("#continue").click(function(){ 
     alert("Clicked"); 

    $("#tblResults TBODY TR").each(function(i, row){ 
      alert("each tr" + i + row); 

      var elementValue = $(this).child('td').find('input[id*="ShowRoom"]'); 

     alert($(elementValue).attr("carid")); 

     }); 
    }); 
}); 

первый вопрос он не зацикливание через каждый ряд? второй никогда не достигает alert($(elemnetValue).attr("carid"));

+0

Идентификаторы являются уникальными в HTML. Идентификаторы ShowRoom повторяются в вашем html –

+0

http://jsfiddle.net/arunpjohny/dLzcr0yL/1/ –

+0

@JqueryKing: Я пытался изменить идентификатор TD, чтобы быть уникальным, не имел никакого значения. Я после ввода type = text, который имеет уникальный идентификатор. – Gauls

ответ

2

jQuery не имеет метода .child(), так что строка вашего кода, вероятно, приведет к ошибке и прекратит выполнение вашего кода (вы должны искать в журнале отладки, чтобы увидеть ошибки, подобные этому).

Вы можете изменить это:

var elemnetValue = $(this).child('td').find('input[id*="ShowRoom"]'); 

к этому:

var elemnetValue = $(this).find('input[id*="ShowRoom"]'); 

Но вы можете еще больше упростить путем изменения этого:

$("#tblResults TBODY TR").each(function(i, row){ 
     var elemnetValue = $(this).find('input[id*="ShowRoom"]'); 
     if (elemnetValue.length) { 
      console.log(elemnetValue.attr("carid")); 
     } 
    }); 

к этому:

$('#tblResults input[id*="ShowRoom"]').each(function(i, item){ 
     console.log($(this).attr("carid")); 
    }); 

P.S. Большинство людей произносят слово, похоже, что вы пытаетесь использовать как element, а не elemnet.

+0

Я использую w3schools, так как фактическое приложение довольно тяжелое и занимает больше времени для сборки. Спасибо, что помогли мне избежать цикла через строку заголовков. Если я хочу прокручивать через каждую строку с атрибутом EventID? это возможно $ ("# tblResults TBODY TR"). attr ("Eventid"). each (function (i, row) { – Gauls

+1

$ ('# tblResults tr [Eventid]'). each (function() {}) – Foxhoundn

+0

@Gauls - вам не нужно итерации по строке. Вы можете просто найти все подходящие 'input [id * =" ShowRoom "]' объекты в таблице. См. Мое последнее редактирование для сокращенной версии, которое просто позволяет CSS-селектор выполняет всю работу за вас. В строках заголовка нет соответствующих тегов 'input', поэтому вам не нужно писать код, чтобы пропустить их. – jfriend00

2

Функция jQuery, которую вы ищете, является .children() не .child().