JQuery обновить только номер - PullRequest
       0

JQuery обновить только номер

2 голосов
/ 21 сентября 2011

у меня есть <span class="gramatz">(8)</span>, и я хотел бы добавить +1 или взять -1 из 8, оставляя () нетронутым, когда я нажимаю кнопку love.

$(function() {
    $(".love").click(function() {
        var id = $(this).attr("id");
        var dataString = 'id=' + id;
        var parent = $(this);
        $(this).fadeOut(300);
        $.ajax({
            type: "POST",
            url: "bookmark.php",
            data: dataString,
            cache: false,
            success: function(html) {
                parent.html(html);
                parent.fadeIn(300);
            }
        });
        return false;
    });
});

ОБНОВЛЕНИЕ: Iзабыл, что мне нужно уменьшить значение, проверьте детали на картинке: http://img593.imageshack.us/img593/6128/ss20110921031605.png

, поэтому, если пользователь нажимает +, мне нужно увеличить значение, если пользователь нажимает - мне нужно уменьшить число.

, поэтому, если значок имеет +, он имеет <div class="over_img">&nbsp;</div>, а если - он имеет <div class="on_img">&nbsp;</div> PS, плюс значки минус генерируются из фона div

Ответы [ 3 ]

1 голос
/ 21 сентября 2011
$('.gramatz').text(function(i, val){
    return '(' + ( +val.replace('(', '').replace(')', '') + 1) + ')';
});

Чтобы сломать это:

$('.gramatz').text(function(i, val) {
    var num = val.replace('(', '').replace(')', ''); // "8"
    num = +num; // Convert from string to number
    num = num + 1; // add 1, will now be 9
    return '(' + num + ')'; // "(9)"
});

Если вы хотите использовать регулярное выражение, вы можете использовать это:

$('.gramatz').text(function(i, val){
    return '(' + ( +val.replace(/[^\d]/g, '') + 1) + ')';
});

И вот скрипка:http://jsfiddle.net/gaA2J/


Для вашего конкретного случая используйте это:

$('.over_img, .on_img').click(function(){
    var amount = $(this).hasClass('over_img') ? 1 : -1 ;
    $('.gramatz').text(function(i, val){
        return '(' + ( +val.replace(/[^\d]/g, '') + amount) + ')';
    });
});

А вот скрипка: http://jsfiddle.net/gaA2J/1/

0 голосов
/ 01 октября 2011

Необходимо использовать .live(), чтобы сделать трюк

0 голосов
/ 21 сентября 2011

Отображается только инкрементный код:

$(function() {
    $(".love").click(function() {
        $('.gramatz').text($('.gramatz').text().replace(/(\d+)/, function(str, val) {
            return +val + 1;
        }))
    });
});

Пример

РЕДАКТИРОВАТЬ

Новый пример

$(function() {
    $(".love").click(function() {
        var $class = $(this).attr('class'),
            inc = $class.indexOf('minus') === -1 ? 1: -1;

        $('.gramatz').text($('.gramatz').text().replace(/(-?\d+)/, function(str, val) {
            return +val + inc ;
        }))
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...