2011-07-18 8 views
6

tengo esta tabla:Calcular la suma de los productos que utilizan un atributo td

<table> 
    <thead> 
     <tr> 
      <th>Quantity</th> 
      <th>&nbsp;</th> 
      <th>Price</th> 
      <th>Sum</th> 
     </tr></thead> 
    <tbody> 
     <tr class="sum"> 
      <td><input class="qty" type="text" value="1" /></td> 
      <td>German format: </td> 
      <td data_price="1375.5">1.375,50 &euro;</td> 
      <td></td> 
     </tr> 
     <tr class="sum"> 
      <td><input class="qty" type="text" value="1" /></td> 
      <td>English format:</td> 
      <td data_price="1375.5">&euro;1,375.50</td> 
      <td></td> 
     </tr> 
     <tr class="sum"> 
      <td><input name="text" type="text" class="qty" value="1" /></td> 
      <td>French format:</td> 
      <td data_price="1375.5">1 375,50 &euro;</td> 
      <td></td> 
     </tr> 
     <tr class="sum"> 
      <td><input name="text2" type="text" class="qty" value="1" /></td> 
      <td>Italian format:</td> 
      <td data_price="1375.5">&euro;1,375.50</td> 
      <td></td> 
     </tr> 
     <tr class="sum"> 
      <td><input class="qty" type="text" value="1" /></td> 
      <td>Spanish format:</td> 
      <td data_price="1375.5">&euro; 1.375,50</td> 
      <td></td> 
     </tr> 
     <tr> 
      <td colspan="3">Total</td> 
      <td id="total"></td> 
     </tr> 
    </tbody> 
</table> 

y quiero usar el valor del atributo "data_price" para calcular la suma como en este enlace: http://jsfiddle.net/QmTNZ/77/

Quiero usar solo el atributo "data_price" en el cálculo y no el.

Por favor ayuda, todavía estoy principiante en jQuery :)

+3

¿No deberían esos atributos 'data' tener un guión, no un guión bajo? –

+0

Por favor deja de escribir etiquetas y gracias. ¡Gracias! :) –

Respuesta

6

Para las células de precios, se debe utilizar este formato:

<td data-price="1375.5">&euro;1,375.50</td> 

es decir, con un guión , no subrayar

Puede utilizar:

$('td').data('price') 

acceder a su valor - ver http://api.jquery.com/data

por ejemplo

var sum = 0; 
$('.sum').each(function() { 
    var q = parseFloat($(this).find('.qty').val()); 
    var p = parseFloat($(this).find('td').eq(2).data('price')); 
    sum += q * p; 
}); 
$('#total').text(sum); 

Trabajando demo en http://jsfiddle.net/alnitak/gzYhN/

+0

En violín, esto es "data-price" y no "data_price" – ChristopheCVB

+0

@Ben El enlace no funciona (404 No encontrado) – Bizboss

+0

Cambié el enlace – ChristopheCVB

0

Trate

var sum=0; 
$('tbody > tr > td[data_price]').each(
    function() 
    { 
     sum += parseFloat(this.attr('data_price')); 
    } 
); 
+0

Datos Los atributos HTML5 tienen el prefijo "data-" y no con "_" ... – ChristopheCVB

+0

@ChristopheCVB - no hay información sobre html5 en la pregunta –

+0

http://www.google.fr/search?q=html+ datos + atributo & ie = utf-8 & oe = utf-8 & aq = t & rls = org.mozilla: fr: oficial & cliente = firefox-a – ChristopheCVB

0

Prueba esto: http://jsfiddle.net/ptfKJ/

Este ejemplo es utilizar el código HTML original.

+0

¡No funciona! – Bizboss

+0

cuando eres changi ng qty? Simplemente agregue el controlador de eventos y realice algunas comprobaciones: http://jsfiddle.net/ptfKJ/2/ –

Cuestiones relacionadas