2012-02-29 2 views
0

с использованием datatables и jeditable плагинов. Всякий раз, когда я использую этот селектор:. $ ('Td [class! = "Readonly"]') Я не могу делать встроенные изменения. Если я прокомментирую селектор, тогда все будет отлично. Я не хочу редактировать столбец флажка по покровным причинам.jquery .makeEditable selector

любая помощь?

спасибо !!

вот мой инициатор.

$(document).ready(function() { 
    $('#example').dataTable({ 
     "sAjaxSource": "js/DataTables-1.9.0/scripts/server_processing.php", 
       "aoColumns": [ 
          {"bVisible": false },//id                        
          {},//code 
          {},//project 
          {},//task 
          {},//type 
          {},//description 
          {"fnRender": function (oObj) { 
           return "<input type='checkbox' class='readonly' value='" + oObj.aData[0] + "' name='check'>"; 
           }, 
          "sClass": "readonly", 
          "bSearchable": false, 
          "bSortable": false 
          }//checkbox 
          ] 

       }) 
       .$('td[class!="readonly"]') 
       .makeEditable({ 
        "sUpdateURL": "js/DataTables-1.9.0/scripts/server_editing.php" 
      }) 
     }); 

Вот мой стол:

<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"> 
<thead> 
    <tr> 
     <th width="2%">ID</th>     
     <th width="10%">Code</th> 
     <th width="10%">Project</th> 
     <th width="10%">Task</th> 
     <th width="10%">Type</th> 
     <th width="50%">Description</th> 
     <th width="2%">Delete</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td class="dataTables_empty">Loading data from server</td> 
     <td class="dataTables_empty">Loading data from server</td> 
     <td class="dataTables_empty">Loading data from server</td> 
     <td class="dataTables_empty">Loading data from server</td> 
     <td class="dataTables_empty">Loading data from server</td> 
     <td class="dataTables_empty">Loading data from server</td> 
     <td align="center" class="readonly">Loading data from server</td> 
    </tr> 
</tbody> 
<tfoot> 
    <tr> 
     <th>ID</th>    
     <th>Code</th> 
     <th>Project</th> 
     <th>Task</th> 
     <th>Type</th> 
     <th>Description</th> 
     <th>Delete</th> 
    </tr> 
</tfoot> 

редактировать

спасибо за помощь всем синтаксисом.

Я поменял его на это, но все равно не кубик? Опять же, удаление селекторного встроенного редактирования работает.

$(document).ready(function() { 
    $('#example').dataTable({options}); 
    $('td').each(function(){ 
     var self = $(this); 
     if(self.hasClass("readonly") != true){ 
      self.makeEditable({"sUpdateURL": "js/DataTables-1.9.0/scripts/server_editing.php"}) 
     } 
    }); 
}); 

ответ

0

Попробуйте использовать $().hasClass();

Вы не струна те должны вместе, JQuery элемент не является метод или свойство другого ... Я удивлен, что он работает с селектором удаляется слишком ... попробуйте это:

$(document).ready(function() { 
    $('#example').dataTable({ 
     "sAjaxSource": "js/DataTables-1.9.0/scripts/server_processing.php", 
     "aoColumns": [ 
      {"bVisible": false},//id  
      {},//code 
      {},//project 
      {},//task 
      {},//type 
      {},//description 
     {"fnRender": function (oObj) { 
       return "<input type='checkbox' class='readonly' value='" + oObj.aData[0] + "' name='check'>"; 
     }, 
     "sClass": "readonly", 
     "bSearchable": false, 
     "bSortable": false 
     }//checkbox 
    ] 

    }); 
    $('td').each(function(){ 
     var self = $(this); 
     if(self.hasClass("readonly") != true){ 
      self.makeEditable({"sUpdateURL": "js/DataTables-1.9.0/scripts/server_editing.php"}) 
     } 
    }); 
}); 
+0

снова, спасибо за синтаксической помощь; Я мог бы принять любой из этих ответов. В конце концов, я никогда не получал метод $ (селектор) для работы. Я даже не уверен, что это возможно с .makeEditable – dan

+1

Я просто добавил параметр ooColumns в .makeEditable и установил столбец «readonly» def null – dan

+0

Я рад, что вы нашли решение ... и я не уверен почему решение @Juicy Scripter не работает, но я уверен, что это было ситуативно. – Relic

0

Вы используете сцепление в неправильном манер:

$('#example').dataTable(options) 
    .find('td[class!="readonly"]') 
    .makeEditable(options); 

// Next code is probably lead to error due to fact that $ isn't exists 
// in result of dataTable function, thus leading to makeEditable not run... 
$('#example').dataTable(options) 
    .$('td[class!="readonly"]') 
    .makeEditable(options); 
+0

Предполагается, что таблица уже заполнена полями. – Relic

+0

@Relic, проблема является синтаксической ошибкой (в результате функции 'dataTable' не существует' $ ') и, следовательно, следующий код:. $ ('Td [class! =" Readonly "]')' не запускается вообще. –

+0

Мой ответ говорит то же самое ... Я комментировал ваш ответ/его исходный код как предложение вперед. Однако мы согласны с проблемой синтаксиса. – Relic

0

Изменить это:

$('#example').dataTable(options) 
    .$('td[class!="readonly"]') 
    .makeEditable(options); 

в этом:

$('#example').dataTable(options) 
    .$('td').not(".readonly") 
    .makeEditable(options);