jQuery Inkrementieren eine ID und var auf Klick
Frage
Ich versuche, eine Taste zu tun, die auf klicken seine ID und eine Variable erhöht. konnte ich einige Codes auf Stackoverflow finden, die den Wert eines Eingabefeldes erhöht, aber ich weiß nicht, es zu ändern, von dort aus.
Hier ist das Markup:
<input type="text" name="qty" value="0" />
<p id="inc">Increase</p>
<p id="dec">Decrease</p>
Und jQuery
<script>
$(document).ready(function()
{
$(function()
{
$("#inc").click(function()
{
$(":text[name='qty']").val(Number($(":text[name='qty']").val()) + 1);
$('#inc').addClass (Number + 1); // this one does not work
var incrementVar = (Number + 1); // this one also does not work
});
$("#dec").click(function()
{
$(":text[name='qty']").val(Number($(":text[name='qty']").val()) - 1);
});
});
});
</script>
Dies macht das val im Eingangs erhöhen, aber ich kann es nicht die $ zu erhöhen machen ( ‚# inc‘) Klasse und die var incrementVar.
Was soll ich tun? Danke
Lösung
var incrementVar = 0;
$(function() {
$("#inc").click(function() {
var value = parseInt($(":text[name='qty']").val()) + 1;
$(":text[name='qty']").val(value);
$('#inc').addClass('a' + value); // I believe class names cannot start with a number
incrementVar = incrementVar + value;
});
});
Andere Tipps
Klassennamen nicht mit einer Zahl beginnen, diese Diskussion Details siehe . Wenn Sie Ihren Klassenpräfix sagen .c1
, .c2
, etc ... Sie etwas tun können:
$(function() {
$("#inc").click(function() {
var num = $(":text[name='qty']").val(function(i, v) {
return Number(v) + 1;
}).val();
$(this).addClass ('c' + num);
var incrementVar = num;
});
$("#dec").click(function() {
$(":text[name='qty']").val(function(i, v) { return Number(v) - 1; });
});
});
Noch eine Anmerkung:. Nicht nötig $(document).ready(function() {
und $(function() {
diese gleichwertig sind, Einwickeln in entweder allein in Ordnung
Für weitere Tastatur-Unterstützung (oben / unten Pfeile / subtrahieren hinzufügen) für diesen Eingang, mein Increment Plugin nützlich sein könnte: http://sean-o.com/increment
Einfach herunterladen und das Skript enthält, dann mit einer Zeile Code nennen:
$(":text[name='qty']").increment({ increment: 1 });
- SEAN O