2015-10-22 2 views
0

У меня есть таблица, которую я динамически заполняю через функцию ajax.Итерация через таблицу для поиска

  <!-- Tab4 --> 
     <div id="ServiceOrderTasks" class="tab-pane"> 
      <div class="widget white-full"> 
      <div class="widget-body"> 
       <div class="row-fluid"> 
       <!-- BEGIN COLUMN --> 
       <div class="span12"> 
        <!--BEGIN LABEL & BADGE PORTLET--> 
        <table id="tasktable" class="table table-bordered table-striped"> 
        <thead> 
         <tr> 
         <th colspan="2">Service Order Task</th> 
         <th>Status</th> 
         </tr> 
        </thead> 
        <tbody id="taskTableContents"> 

        </tbody> 
        </table> 
        <!--END LABEL & BADGE PORTLET--> 
       </div> 
       <!-- END COLUMN --> 
       </div> 
      </div> 
      </div> 
     </div> 

Код Аякса записывает содержимое

function GetServiceOrderDetailsOnComplete4(result) { 
var content = ""; 

    $('#taskTableContents > tbody').empty(); 

    var records = result.split("*"); 
    var len = records.length - 1; 
    var id_name = ""; 
    var field = ""; 

    for (var i = 0; i < len; ++i) { 
    var record = records[i].split("|"); 
    id_name = ""; 
    id_name = "taskID|" + record[0] + "|" + record[1]; 

    field = record[38].trim(); 
    if (field == "1") { 
     content = content + "<tr><td colspan='2'>" + record[2] + "</td>" + 
     "<td>" + 
     " <select name='" + id_name + "' id='" + id_name + "' data-role='slider' data-mini='true'>"; 

    switch (record[14]) { 
    case "0": 
    content = content + " <option value=1>Completed</option>" + 
     " <option value=0 selected>Incomplete</option>" + 
     " <option value=0>Not Applicable</option>"; 
    break; 

    case "1": 
    content = content + " <option value=1 selected>Completed</option>" + 
     " <option value=0>Incomplete</option>" + 
     " <option value=0>Not Applicable</option>"; 
    break; 
    case "2": 
    content = content + " <option value=1>Completed</option>" + 
     " <option value=0>Incomplete</option>" + 
     " <option value=0 selected>Not Applicable</option>"; 
    break; 

    default: 
    content = content + " <option value=1>Completed</option>" + 
     " <option value=0 selected>Incomplete</option>" + 
     " <option value=0>Not Applicable</option>"; 

    break; 

    } 


    content = content + " </select>" + 
    "</td>" + 
    "</tr>"; 
    }; 
    }; 
    $("#taskTableContents").append(content); 
} 

function GetServiceOrderDetailsOnFail(result) { 
} 

Хотя довольно грязный, код выше работ.

Возникает вопрос: мне нужно пройти через стол и получить каждую из строк.

Существует некоторый условный код, который устанавливает флаг на основе выбранного значения.

// $('#tasktable > tbody > tr > td > select').each(function() { 
    $('#taskTableContents > tbody > tr > td > select').each(function() { 
    var parms = this.id.split("|"); 
    var sor = parms[1]; 
    var seq = parms[2]; 
    var v = $(this).val(); // will get the value correctly 
    switch (v) { 
     case "0": 
//  UpdateServiceOrderDetailStatus(sor, seq, 0); 
     okToClose = false; 
     break; 
     case "1": 
     UpdateServiceOrderDetailStatus(sor, seq, 1); 
     break; 
     case "2": 
//  UpdateServiceOrderDetailStatus(sor, seq, 0); 
     okToClose = false; 
     break; 
    } 
    }); 

Во время выполнения кода, отладчик получает эту линию и переходит непосредственно к okToClose = ложной линии.

$('#taskTableContents > tbody > tr > td > select').each(function() { 

Что мне не хватает?

+0

Когда вы запускаете код, который ищет таблицу? Это в обработчике событий? – Barmar

+0

yes - выполняется, когда пользователи нажимают кнопку – pithhelmet

+0

. Ваша петля установит 'okToClose = false', если ** any ** выпадающих списков установлены на' 0' или '2'. – Barmar

ответ

0

Вместо того, чтобы пытаться разобрать таблицу динамически с ..

#taskTableContents > tbody > tr > td > select 

Каких referes на очень конкретный элемент, я хотел бы добавить класс на вашем селектор и затем перебирать каждый селектор в документе, пока вы можете найдите тот, который вы хотите. Таким образом, вам даже не нужно беспокоиться о расположении таблиц.

<select class="select"/> 
    <options> 
</select> 
$('.select').each(function() { 
    //We have each select now as this 
    if(this.id === somethingIWant) { 
     //do something with this select 
    }; 
}); 

Надеется, что это очищает его для вас, если не может быть, вы можете предоставить другое описание того, что вы пытаетесь сделать на самом деле или сделать jsfiddle вашего кода не работают должным образом.