2017-09-25 88 views
1

我附加一个td,其中包含td和一个名为counter的变量,点击链接按钮我希望计数器变量为 递增或递减,但我无法弄清楚如何用jQuery选择附加的链接按钮。下面是我的代码: -用jQuery选择附加链接按钮

var quantity = 1; 

$("#order-table table").append(' 
<tr> 
<td><button class="btn btn-link js-increment">+</button>' + quantity + 
'<button class="btn btn-link">-</button></td> 
</tr>') 

这里是我的功能,努力增加变量

$(".js-increment").click(function() { 
quantity++; 
}); 

回答

1

当你添加新的元素到DOM,需要附加一个事件监听器到已经在DOM中的元素...如body或您的table

以下是您提供的代码和一些小的更改的working fiddle

var quantity = 1; 

$("#order-table table").append('<tr><td><button class = "btn btn-link btn-plus"> + </button><span class="value">' + quantity + '</span><button class = "btn btn-link btn-minus"> - </button></td></tr>'); 

$('body').on('click', '.btn-plus', function() { 
    quantity++; 
    $(this).next('.value').text(quantity); 
}); 

$('body').on('click', '.btn-minus', function() { 
    quantity--; 
    $(this).prev('.value').text(quantity); 
}); 
1

您可以用span像这样的包装你的数量。此外,添加不同类的按钮:

$("#order-table table").append(' 
<tr> 
    <td> 
     <button class="btn btn-link btn-increment">+</button> 
     <span>' + quantity + '</span> 
     <button class="btn btn-link btn-decrement">-</button> 
    </td> 
</tr>') 

添加以下click事件您的document.ready里:

$(document).ready(function(){ 
    $("body").on('click', '#order-table table .btn-increment', function(){ 
     $quantity = $(this).closest("td").find("span"); 
     $quantity.text(parseInt($quantity.text()) + 1); 
    }); 

    $("body").on('click', '#order-table table .btn-decrement', function(){ 
     $quantity = $(this).closest("td").find("span"); 
     $quantity.text(parseInt($quantity.text()) - 1); 
    }); 
}); 
+0

您的解决方案已接近完成,但Click事件不会起作用,因为该元素是不是已经在DOM。你需要使用像'$(“#order-table table”)。on('click','.btn-increment',function(){});'它可以在动态生成的元素上运行,如OP当他写“附加”时提到。 –

+0

@ vyx.ca我是个小丑。更新。 – adiga