I'm using this code
<a id="minus" href="#">-</a>
<span id="VALUE">0</span>
<a id="plus" href="#">+</a>
Javascript:
$(function(){
var valueElement = $('#VALUE');
function incrementValue(e){
valueElement.text(Math.max(parseInt(valueElement.text()) + e.data.increment, 0));
return false;
}
$('#plus').bind('click', {increment: 1}, incrementValue);
$('#minus').bind('click', {increment: -1}, incrementValue);
});
to have a plus/minus incrementator of the filed named "VALUE". Now, i have a form using this containing 150 field like this... there's a way to generalize this code passing in some way to the function the name of the field that the user is incrementing/decrementing? Otherwise, i have to replicate this code 150 times...
Use a class instead of an ID in your selector
and
Put them inside a container like
This way you can select the display relatively without too much trouble like
in the respective
click
handlers.try this one if this helps:
i have changed a little bit i used
classes .plus, .minus
instead ofids #plus, #minus
check this out in fiddle: http://jsfiddle.net/L2UPw/
If you want to genericise your code, then best method would be to use a single class on both elements that affect the value, but add a
data
attribute which is the factor to adjust the amount to add/remove. You can then wrap the controls in a single containingdiv
to make DOM traversal easier.By using this pattern you can have multiple instances of the control on the page, with all buttons governed by a single click handler. Try this: