Как обобщить скрипт?

Здравствуйте.
Есть простеньких скрипт рейтинга подымающий значение на единицу. Проблема в том что он заточен под конкретные id, и как следствие можно повесить на что-то одно.
Подскажите как создать общее правило для него.

Собственно сам код.
  • Вопрос задан
  • 2639 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Как то так

<div class="rating">
<a href="#" class="up" name="voite1">↑</a>
<a href="#" class="down" name="voite1">↓</a>
<input type="hidden" value="1" class="btn" />
<input type="hidden" value="1" class="dtn" />
<span id="numb">37</span>
</div>


$(function(){
    $('.up').click(function(){
        var btn = $(this).siblings('.btn').val();
        if (btn<2){
            var number = $(this).siblings('span').text();
            var dtn = $(this).siblings('.dtn').val();
            ++number;
            $(this).siblings('span').text(number).removeClass("red").addClass("blue");
            ++btn;
            --dtn;
            $(this).siblings('.btn').val(btn);
            $(this).siblings('.dtn').val(dtn);
        }
    });
    $('.down').click(function(){
        var dtn = $(this).siblings('.dtn').val();
        if (dtn<2){
            var number = $(this).siblings('span').text();
            var btn = $(this).siblings('.btn').val();
            --number;
            $(this).siblings('span').text(number).removeClass("blue").addClass("red");
            ++dtn;
            --btn;
            $(this).siblings('.btn').val(btn);
            $(this).siblings('.dtn').val(dtn);
        }
    });
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
ну как вариант: сделайте классы up и down, на них весьте клики. А чтобы у Вас прибавлялось значение только в нужном счетчике, повесьте на него класс numb, но ищите его через родителя.
То есть ищите родителя у ссылки, по которой щелкнули - это будет div, его дочернему элементу с классом numb присваиваете новое значение.
Ответ написан
Комментировать
sdevalex
@sdevalex
Можно так... хитро, как в Bootstrap.
jsfiddle.net/vgu7z/2

$(function(){
    $(document.body).on('click', '[data-value][data-target]', function(){
        var target = $($(this).data('target'));
        target.text(+target.text() + $(this).data('value'));
    });
});


Там ещё цвет нужно менять, тогда так.
jsfiddle.net/vgu7z/4

И лимиты ещё...
jsfiddle.net/vgu7z/5
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы