2009-07-24 5 views
11

Disons que j'ai une boucle PHP qui affiche les données que vous pouvez supprimer. J'utilise AJAX, donc quand vous supprimez une ligne, il traite un script PHP et la ligne disparaît de la page.jQuery: Comment obtenir le contenu d'un span, soustraire de 1 et remplacer le contenu de span par un nouveau nombre?

Cependant, j'ai quelque chose qui dit "Il y a 5 articles". Je voudrais que "5" change quand un élément est supprimé. Je pensais que le plus simple serait de soustraire par un en Javascript.

Le problème est, je ne sais vraiment pas comment. Si quelqu'un pouvait me diriger dans la bonne direction, ce serait génial.

+0

J'ai mis à jour mon message. Maintenant, il pourrait vous aider –

Répondre

18

En supposant que le compte est dans une période avec l'id 'cnt':

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

Edit:
Safer Version:

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

Merci un million! Je préférerais faire cela plutôt qu'un AJAX "refresh" car c'est moins de stress sur le serveur. Le serveur sur lequel je travaille est assez vieux et peut à peine gérer les quelques requêtes AJAX que j'ai déjà. – dallen

+0

Je peux voir cela utile dans un proche avenir +1 – JasonDavis

+1

Serait-ce plus sûr avec un parseInt() dedans? Javascript est assez pardonnant sur ce genre de chose, mais il semble que ce soit pratique au cas où ... –

1

Mettez à jour la liste complète si quelque chose a changé. Vérifiez-le en utilisant AJAX environ toutes les 5 secondes.

Or

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

puis modifier la valeur de durée associée à l'identifiant « nombre » avec le nombre actuel de lignes après la suppression. Stack Overflow utilise cette méthode lorsqu'une nouvelle réponse est publiée lorsque vous en ajoutez une nouvelle.

Vous pouvez soustrayez à l'aide

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

Way le plus facile à utiliser .... – Mikeys4u

3

Disons que nous commençons par trois:

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

Maintenant, nous avons besoin de jQuery pour gérer l'événement de changement sur la liste

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

chaque fois que #thelist change, il mettra à jour le leng th en #numéro. Un avantage de cette approche est qu'en liant l'événement change, vous n'avez pas besoin de définir un intervalle sur une minuterie ou quelque chose comme ça. Tout fait juste ce que c'est censé faire.

+0

Très impressionnant ... Je vais voir si je peux retravailler ma liste dans ce format. Merci! – dallen

Questions connexes