2009-07-24 7 views
11

Diciamo che ho un loop PHP che visualizza i dati che è possibile eliminare. Sto usando AJAX, quindi quando elimini una riga, elabora uno script PHP e la riga scompare dalla pagina.jQuery: Come posso ottenere il contenuto di una span, sottrarre per 1 e sostituire il contenuto di span con il nuovo numero?

Tuttavia, ho qualcosa che dice "Ci sono 5 articoli". Mi piacerebbe che "5" cambi quando un oggetto viene cancellato. Ho pensato che il modo più semplice sarebbe quello di sottrarre di uno in Javascript.

Il problema è che davvero non so come. Se qualcuno potesse indicarmi la giusta direzione, sarebbe fantastico.

+0

Ho aggiornato il mio post. Ora potrebbe aiutarti –

risposta

18

Assumendo il conteggio è in un arco con id 'CNT':

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

Edit:
Safer Versione:

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

Grazie un milione! Preferisco fare questo di un "aggiornamento" AJAX poiché questo è meno stress sul server. Il server su cui sto lavorando è piuttosto vecchio e riesce a malapena a gestire le poche richieste AJAX che ho già. – dallen

+0

Riesco a vedere questo ritorno utile nel prossimo futuro +1 – JasonDavis

+1

Sarebbe più sicuro con un parseInt() in esso? Javascript è piuttosto indulgente su questo genere di cose, ma sembra che potrebbe essere utile nel caso in cui ... –

1

Aggiorna l'elenco completo se è stato modificato qualcosa. Controllalo usando AJAX circa ogni 5 secondi.

O

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

e quindi modificare il valore dello span con id 'numero' con il numero attuale di righe dopo la cancellazione. Stack Overflow utilizza questo metodo quando viene aggiunta una nuova risposta quando ne aggiungi una nuova.

È possibile sottrarre 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

il modo più facile da usare .... – Mikeys4u

3

Diciamo che si parte con tre:

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

Ora abbiamo bisogno di alcuni jQuery per gestire l'evento di modifica della lista

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

ogni volta che #stelist cambia, aggiornerà il leng in # numero. Un vantaggio di questo approccio è che vincolando l'evento change, non è necessario impostareInterval su un timer o qualcosa del genere. Tutto fa solo ciò che è supposto.

+0

Molto impressionante ... Vedrò se riesco a rielaborare la mia lista in questo formato. Grazie! – dallen

Problemi correlati