2009-07-24 4 views
11

Załóżmy, że mam pętlę PHP, która wyświetla dane, które możesz usunąć. Używam AJAX, więc po usunięciu wiersza przetwarza skrypt PHP i wiersz znika ze strony.jQuery: Jak uzyskać zawartość zakresu, odjąć 1 i zastąpić zakres span nowym numerem?

Mam jednak coś, co mówi "Jest 5 elementów". Chciałbym, aby "5" zmieniło się po usunięciu elementu. Doszedłem do wniosku, że najłatwiej byłoby odjąć go w JavaScript.

Problem polega na tym, że tak naprawdę nie wiem jak. Gdyby ktoś wskazał mi właściwy kierunek, byłoby wspaniale.

+0

Zaktualizowałem mój wpis. Teraz może ci pomóc –

Odpowiedz

18

zakładając licznik jest w przedziale z id 'cnt':

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

Edit:
Safer Wersja:

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

Dzięki za milion! Wolę to zrobić niż odświeżanie AJAX, ponieważ jest to mniejszy stres na serwerze. Serwer, nad którym pracuję, jest dość stary i ledwo radzi sobie z kilkoma żądaniami AJAX, które już mam. – dallen

+0

Widzę, że przyda się to w niedalekiej przyszłości +1 – JasonDavis

+1

Czy byłoby to bezpieczniejsze przy użyciu parseInt()? JavaScript jest dość wyrozumiały, ale wydaje się, że może być przydatny na wszelki wypadek ... –

1

Zaktualizuj pełną listę, jeśli coś się zmieniło. Sprawdź to za pomocą AJAX co 5 sekund.

lub

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

a następnie zmienić wartość zakresu o identyfikatorze „numer” o aktualnej liczbie rzędów po usunięciu. Stosowanie przepełnienia stosu używa tej metody, gdy nowa odpowiedź jest publikowana podczas dodawania nowej.

można odjąć użyciu

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

Najłatwiejszy w użyciu .... – Mikeys4u

3

Powiedzmy zaczynamy trzech:

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

Teraz musimy trochę jQuery obsłużyć zdarzenia zmiany na liście

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

za każdym razem, gdy #lista się zmieni, aktualizacja zostanie zaktualizowana th w # numer. Zaletą tego podejścia jest to, że wiążąc zdarzenie change, nie trzeba ustawiać interwala na liczniku czasu ani niczego podobnego. Wszystko po prostu robi to, co powinno.

+0

Bardzo imponujące ... Zobaczę, czy mogę przerobić moją listę na ten format. Dzięki! – dallen

Powiązane problemy