正如您在此处所见jsfiddle.net/TTU4Z/1/ 有问题的jquery代码在下面,如果我运行它没有我的所有代码(如在jsfiddle中)它运行完美。但我的所有代码都没有运行。
$(document).ready(function() {
// This button will increment the value
$('.plus').click(function(e){
// Stop acting like a button
e.preventDefault();
// Get the field name
fieldName = $(this).attr('field');
// Get its current value
var currentVal = parseInt($('input[id='+fieldName+']').val());
// If is not undefined
if (!isNaN(currentVal)) {
// Increment
$('input[id='+fieldName+']').val(currentVal + 1);
} else {
// Otherwise put a 0 there
$('input[id='+fieldName+']').val(0);
}
});
// This button will decrement the value till 1
$(".minus").click(function(e) {
// Stop acting like a button
e.preventDefault();
// Get the field name
fieldName = $(this).attr('field');
// Get its current value
var currentVal = parseInt($('input[id='+fieldName+']').val());
// If it isn't undefined or its greater than 0
if (!isNaN(currentVal) && currentVal > 0) {
// Decrement one
$('input[id='+fieldName+']').val(currentVal - 1);
} else {
// Otherwise put a 0 there
$('input[id='+fieldName+']').val(0);
}
});
});
点击"添加"按钮一切都很好,但当你点击减号或加号按钮时,它会全部删除。
如您所见,它应该增加或减少相对输入的值,但如果我尝试编辑这些函数中的所有内容,则没有任何变化。 怎么办?
答案 0 :(得分:5)
由于您要动态追加元素,因此在这种情况下您必须使用event delegation
。实际上注册的事件没有在你的上下文中调用,这就是buttons
展示其原始行为的原因。
尝试,
$(document).on('click','.plus',function(e){
和
$(document).on('click','.minus',function(e){
此外,您动态构建的selector
包含一些meta-characters
,只需将其作为string
传递,或者您必须escape
,以便制作您的[id='blah']
代码工作正常。
修复连接问题后的新演示。在该演示中,我刚删除了$('#blah')
等属性选择器,并将其替换为{{1}}。
答案 1 :(得分:1)
请参阅更新的小提琴http://jsfiddle.net/LfNmh/
你在代码字符串中有你的x变量,它应该在代码中。第15行。
var numPortata = '<td><button class="minus" field="portata'+x+'">-</button><input id="portata'+x+'" type="number" name="numPortata[]" value="1" size="10" min="1" max="10" step="1" required><button class="plus" field="portata'+x+'">+</button></td>';
我也更改了代码,以便像Rajaprabhu所说的那样在文档级附加事件。