function inc_field( $field, increment ) {
var val = parseInt($field.val());
val += increment;
if (val > 0) {
$field.val(val).change();
}
}
$(document).on('click', '.quantity .plus', function(e) {
inc_field ($(this).prev('input.qty'), +1);
inc_field ($(this).next('input.qty'), -1);
});
$(document).on('click', '.quantity .minus', function(e) {
inc_field ($(this).prev('input.qty'), -1);
inc_field ($(this).next('input.qty'), +1);
});
<a class="opener" href="javascript:;">open</a>
<div class="block">
...
</div>
<a class="opener" href="javascript:;">open</a>
<div class="block">
...
</div>
<a class="opener" href="javascript:;">open</a>
<div class="block">
...
</div>
<a class="opener" href="javascript:;">open</a>
<div class="block">
...
</div>
var $blocks = $('.block'); // все блоки имеют класс block и перед ним элемент .opener для раскрытия.
$('.opener').on('click', function(e) {
e.preventDefault();
var $nextBlock = $(this).next('.block');
$blocks.not($nextBlock).hide();
$nextBlock.show();
});
var m = window.location.href.match(/([^#]+)#$/);
if ( m !== null ) {
window.location.replace(m[1]);
}
$.get(script).done(function(data) {
$('<script></script>').html(data).appendTo('body');
});
$.get(stylesheet).done(function(data) {
$('<style type="text/css"></style>').html(data).appendTo('body');
});