Счетчик приращений - PullRequest
       12

Счетчик приращений

1 голос
/ 08 июня 2011
jQuery.fn.add = function() {

    var Bnumber = $(this).find(".B_Add");

    if (Bnumber) {
        Bcount = parseInt(Bnumber.html()) + 1;
        $(this).find("div.B_Add").remove();
        $(this).parent().find(".B_List").append('<div class="Badge B_Add">'+ Bcount +'</div>');

    } else {
        $(this).find(".B_List").append('<div class="Badge B_Add">1</div>');
    }
}

У меня запущен скрипт контекстного меню, когда я нажимаю на одну из опций, она вызывает эту функцию. Это должно видеть, есть ли у активного элемента этот значок или нет. Если это так, он увеличивает целочисленное значение значка. В противном случае, он создает значок, начиная с 1. Последняя часть легче, а первая сложнее.

Я думаю, что смешиваю типы элементов, и я не уверен, как использовать parseInt ...

EDIT

Разобрался.

jQuery.fn.add = function() {
    if ($(this).find(".Badge").hasClass(".B_add")) {
        bCount = parseInt($(this).find(".B_add").text());
        $(this).find(".B_add").remove();
        $(".OPT .B_list").append('<div class="Badge B_add">'+(bCount+1)+'</div>');
    } else {
        $(".OPT .B_list").append('<div class="Badge B_add">0</div>');
    }
}

Ответы [ 3 ]

2 голосов
/ 08 июня 2011

Попробуйте это.

jQuery.fn.add = function() {

    var Bnumber = $(".B_Add");

    if (Bnumber) {
        var Bcount = parseInt(Bnumber.html()) + 1;
        Bnumber.html(Bcount);
    } else {
        $(this).find(".B_List").append('<div class="Badge B_Add">1</div>');
    }
}
0 голосов
/ 08 июня 2011

Вот мое мнение:

jQuery.fn.add = function() {
    var badge = $('.B_Add', this);

    if (badge.length) {
        badge.html(Number(badge.html()) + 1);
    } else {
        $('.B_List', this).append('<div class="Badge B_Add">1</div>');
    }
}
  1. Использование формата $('.B_Add', this) для чего-то внутри чего-то другого всегда казалось мне самым чистым синтаксисом.
  2. Вы должны проверить на badge.length, чтобы увидеть, был ли найден элемент - даже если селектор jQuery не соответствует ни одному элементу, он все равно оценивается как true
  3. Нет необходимости воссоздавать элемент B_Add, изменение его содержимого должно выполнить то же самое.
  4. Я никогда не использовал parseInt в своей жизни. Number кажется, делает то же самое, и выглядит лучше.
0 голосов
/ 08 июня 2011

Попробуйте

Bcount = parseInt(Bnumber.text()) + 1;
...