2009-07-24 8 views
11

Digamos que tengo un bucle PHP que muestra datos que puede eliminar. Estoy usando AJAX, así que cuando eliminas una fila, procesa un script PHP y la fila desaparece de la página.jQuery: ¿Cómo obtengo el contenido de un tramo, restarlo por 1 y reemplazar el contenido del tramo por un nuevo número?

Sin embargo, tengo algo que dice "Hay 5 elementos". Me gustaría que "5" cambie cuando se elimine un elemento. Pensé que la manera más fácil sería restar por uno en Javascript.

El problema es que realmente no sé cómo. Si alguien pudiera señalarme en la dirección correcta, sería genial.

+0

He actualizado mi publicación. Ahora podría ayudarte –

Respuesta

18

Suponiendo que el recuento es en un lapso con id 'cnt':

$("#cnt").text($("#cnt").text()-1) 

Editar:
Safer Versión:

var cntTag = $("#cnt:first"); 
if (cntTag.Length == 1) 
{ 
    var cnt = parseInt(cntTag.text()); 
    if (!isNaN(cnt)) 
    { 
     cnt--; 
     cntTag.text(String(cnt)); 
    } 
} 
+0

¡Gracias a un millón! Prefiero hacer esto que una "actualización" AJAX ya que esto es menos estresante para el servidor. El servidor en el que estoy trabajando es bastante viejo y apenas puedo manejar las pocas solicitudes de AJAX que ya tengo. – dallen

+0

Veo que esto es útil en el futuro cercano +1 – JasonDavis

+1

¿Sería más seguro con un parseInt() en él? Javascript es bastante indulgente con ese tipo de cosas, pero parece que podría ser útil por si acaso ... –

1

Actualice la lista completa si algo ha cambiado. Verifíquelo usando AJAX cada 5 segundos.

O

There are <span id="number">5</span> items. 

y luego cambiar el valor de la amplitud con id 'número' con el número actual de filas después de la eliminación. Stack Overflow utiliza este método cuando se publica una nueva respuesta cuando se agrega una nueva.

Puede restar usando

parseInt($("span").html()); 
7

HTML:

There are <span class="numitems">5</span> items. 

JS:

var span = $("span.numitems"); 
span.html(parseInt(span.html()) - 1); 
+0

De la manera más fácil de usar .... – Mikeys4u

3

Digamos que empezamos con tres:

<p>There are <span id='number'>3</span> items.</p> 
<ol id ='thelist'> 
    <li> one 
    <li> two 
    <li> three 
</ol> 

Ahora necesitamos un poco de jQuery para manejar el evento de cambio en la lista

$(function(){ 
    $('#thelist').bind('change', function(){ 
    $('#number').html($('#thelist li').length) 
    } 
} 

cada vez que #thelist cambie, actualizará el idioma th en #number. Una ventaja de este enfoque es que al vincular el evento de cambio, no es necesario configurar Intervalo en un temporizador ni nada de eso. Todo solo hace lo que se supone que debe hacer.

+0

Muy impresionante ... Veré si puedo volver a trabajar mi lista en este formato. ¡Gracias! – dallen

Cuestiones relacionadas