Оптимизировать инпут-счетчик
Добрый день, на старнице есть инпут счетчик для интернет магазина (укажите количество товаров + и -)
HTML: <div class="input-group spinner"> <input type="text" class="form-control" value="1"> <div class="input-group-btn-vertical"> <button class="btn btn-default" type="button">+</button> <button class="btn btn-default" type="button">–</button> </div> </div> Его я реализовал вот таким Js:
$(document).ready(function ($) {
$('.spinner .btn:first-of-type').on('click', function() {
$('.spinner input').val( parseInt($('.spinner input').val(), 10) + 1);
});
$('.spinner .btn:last-of-type').on('click', function() {
$('.spinner input').val( parseInt($('.spinner input').val(), 10) - 1);
});
})
Но проблема в том, что этих счетчиков до 10-20 штук на странице, а когда кликаешь, то он изменяет значения во всех инпутах на странице, как-то можно сделать, что бы изменял, только в том инпуте, на котором клик происходит.(и желателно не через id, то можно с ума будет сойти) Заранее спасибо! |
Делегируйте обработку родителю кнопок input-group-btn-vertical, а их индекс в наборе будет определять операцию +/-. Поле ввода легко найти у родителя, хотя для input-group-btn-vertical, это и проще будет - .prev().
|
laimas,
мощно задвинул.... я даже ничего не понял, можно как-то попроще) |
Павел Турченко,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function() {
$(".spinner").each(function(c, b) {
$(b).on("click", ".btn-default", function() {
var a = $(".form-control", b)[0];
$(".btn-default", b).index(this) ? a.value-- : a.value++;
0 > a.value && (a.value = 0)
})
})
});
</script>
</head>
<body>
<div class="input-group spinner">
<input type="text" class="form-control" value="1">
<div class="input-group-btn-vertical">
<button class="btn btn-default" type="button">+</button>
<button class="btn btn-default" type="button">–</button>
</div>
</div>
<div class="input-group spinner">
<input type="text" class="form-control" value="1">
<div class="input-group-btn-vertical">
<button class="btn btn-default" type="button">+</button>
<button class="btn btn-default" type="button">–</button>
</div>
</div>
</body>
</html>
|
рони,
большое спасибо! я бы поставил + к карме, но не пускает программа сайта, говорит, что бы я плюсанул кому-то другому.... |
| Часовой пояс GMT +3, время: 10:04. |