jatery datatables обновляет ячейку - PullRequest
       0

jatery datatables обновляет ячейку

2 голосов
/ 20 сентября 2010

У меня есть таблица, изложенная как:

<table id="myTable">
  <thead>
    <tr>
      <td><input type="checkbox" id="selectall" /></td>
      <td>Column 1</td>
      <td>Column 2</td>
      <td>Column 3</td>
      <td>Column 4</td>
      <td>Column 5</td>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

Затем JavaScript:

var myTable = jQuery('#myTable').dataTable({
    /* options */
});

// Ajax request to populate:
jQuery.get('script.php', function(data){
    eval("rows="+data);
    for(var i=0;i<rows.length;i++){
        myTable.fnAddData([
          "<input type=\"checkbox\" id=\""+rows[i].uniqueID+"\" />",
          rows[i].col1Txt,
          rows[i].col2Txt,
          rows[i].col3Txt,
          rows[i].col4Txt,
          rows[i].col5Txt ]);
    }
});

Теперь у меня проблемы с обновлением таблицы, на основе которой установлены флажки:

Я пытаюсь обновить 5-ю ячейку в каждой проверяемой строке. Я использую комбинацию fnUpdate и fnGetPosition (http://www.datatables.net/api).

fnGetPosition ожидает элемент td или tr, поэтому я решил просто взять родительский флажок td:

var checkBoxes = jQuery('td > input:checked', myTable);
for(var i=0;i<checkBoxes.length;i++){
    var parentTD = jQuery('#'+checkBoxes[i].id).parent(); //seems wrong?
    var pos = myTable.fnGetPosition(parentTD);
    //alert(pos[0]);
    myTable.fnUpdate('Updated text', pos[0], 5);
}

Но я должен делать parentTD неправильно, так как pos, кажется, никогда не содержит значения.

Есть идеи?

1 Ответ

7 голосов
/ 20 сентября 2010

вы можете использовать функцию каждая для итерации по объекту jQuery, это проще, чем при использовании цикла for.элементы td вместо получения проверенных входных данных.

Это будет намного более производительным, так как в каждой операции нужно убрать 2 селектора.Я не пробовал, но что-то вроде этого должно работать

var checkBoxes = jQuery('td:has(input:checked):not(#selectall)', myTable);
checkboxes.each(function(){
    var pos = myTable.fnGetPosition($(this)); // Im not familiar with the plugin so the extra $() might be overkill
    alert(pos) // maybe run this alert again, check if you get back an object/value? use firebug to debug and see its value?
    myTable.fnUpdate('Updated text', pos[0], 5);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...