2016-06-03 5 views
0

Ich versuche, Attribute von einer Zelle zu bekommen, aber ich bin nicht in der Lage.Wie bekomme ich Attribute der Zelle auf Datenträgern

Mein Code:

HTML

<td id="project_quantity_<?=$user->id;?>" data-type="project"  data-quantity="true" data-id="<?=$user->id;?>"><?=$user->project_quantity; ?></td> 
<td id="entailment_quantity_<?=$user->id;?>" data-type="entailment" data-quantity="true" data-id="<?=$user->id;?>"><?=$user->entailment_quantity; ?></td> 

javscript

jQuery(document).ready(function() 
{ 
    table.cells('[data-quantity="true"]').every(function() 
    { 
     jQuery.ajax({ 
      url:"<?=base_url("admin/users/getQuantity")?>/"+this.{GET_DATA_ID_ATTRIBUTE}, 
      data:{type:this.{GET_DATA_TYPE_ATTRIBUTE}}, 
      type:"post", 
      success:function(data) 
      { 
       cell = table.cell("#"+data.type+"_quantity_"+data.id); 
       cell.data(data.ids+"/"+cell.data()); 
      }, 
      error: function(x,y,z){console.log(x);} 
     }); 
    }); 
}); 

Die Tasten {} auf dem Code ist, wo ich die Attribute aus der Zelle erhalten möchten.

Ich hoffe, war auf meine Erklärung klar gewesen.

+0

Diese Mitteilung nicht in AJAX verwenden, da, dass Ajax-Objekt selbst ist. Führe ein 'var obj = $ (this)' vor ajax aus und benutze 'obj.mehtodName()'. In Ajax können Sie '$ obj.data ('id') verwenden;' – vaso123

+0

Was ist 'table' im Kontext? DOM-Element, jQ-Element? – Max

+0

Hallo @ Max-Tabelle ist Tabe = jQuery ("# ​​Tabelle"). DataTables(); und die Zellen und alle Funktionen sind hier definiert: https://datatables.net/reference/api/cells() .every(). –

Antwort

1

Ok !!! Ich löse es ...

jQuery(document).ready(function() 
{ 
    table.cells('[data-quantity="true"]').every(function() 
    { 
     node = jQuery(this.node()); 
     jQuery.ajax({ 
      url:"<?=base_url("admin/users/getQuantity")?>/"+node.data("id"), 
      data:{type:node.data("type")}, 
      type:"post", 
      success:function(data){ 
       cell = table.cell("#"+data.type+"_quantity_"+data.id); 
       cell.data(data.ids+"/"+cell.data()); 
      }, 
      error: function(x,y,z){console.log(x);} 
     }); 
    }); 
}); 

Wo die wichtige Linie ist diese:

node = jQuery(this.node()); 

Und nachdem ich Dinge wie diese machen kann:

data:{type:node.data("type")} 

Vielen Dank an alle.

Dokumentation:

datatables: .every() method

datatables: .cell().node() method

datatables: .cell().data() method

+1

Froh, dass Sie es gelöst haben. –

1
var dataType = $(this).data('type'); 
... // your AJAX stuff directly below. 

Das sollte Ihnen den Wert geben, der für data-type = auf Ihren dom-Objekten festgelegt ist.

+0

Danke @bdb, aber es funktioniert nicht, ich denke, es würde funktionieren, wenn ich Folgendes verwenden würde: jQuery ('[data-quantity = "true"]'). Je (function() {$ (this) .data ('Art');}); –

+0

Das würde mit jedem funktionieren, aber da Sie jeden verwenden, versuchen Sie etwas wie folgt: 'this.dataset.type' –

+0

ummm Kein @bdb ... es funktioniert nicht :(es ist kein jQuery Objekt es ist eine datable Zelle, mit seiner eigenen Api ... –

Verwandte Themen