我怀疑我的一些问题发生在b / c我将所有功能都放在$(document).ready()
中。如果有人可以输入我应该使用的jQuery代码,我将非常感激!
只有第一个添加按钮才有效。
删除按钮 其他添加的行'只有当鼠标悬停在第一个项目符号上时,才会显示删除按钮。
删除按钮仅适用一次。删除一行后,删除按钮&添加按钮失去了功能。删除和添加按钮也不会消失。
HMTL
这是我要添加的行
<div class="row">
<div class="col-lg-7">
<div class="form-group">
<div class="input-group input-group-lg">
<div class="input-group-btn">
<button type="button" class="btn btn-default button-remove" aria-label="Remove">
<span class="glyphicon glyphicon-minus-sign" aria-hidden="true"></span>
</button>
<button type="button" class="btn btn-default button-bullet" aria-label="Bullet">
<span class="glyphicon glyphicon-one-fine-dot" aria-hidden="true"></span>
</button>
</div>
<input type="text" name="Worksheet-Problem" class="form-control" placeholder="Problem..." aria-label="Write worksheet problem here">
<div class="input-group-btn">
<button type="button" class="btn btn-default button-add" aria-label="Add">
<span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
</button>
</div>
</div>
</div>
</div>
</div>
的jQuery
这些是我用来设置按钮动画和添加/删除行的功能。
$(document).ready(function(){
$("input[type='text'][name='Worksheet-Problem']").closest('.row').hover(function() {
$(".button-add").fadeToggle(300);
})
$(".button-bullet").closest('.input-group-btn').hover(function(){
$('.button-bullet').toggle();
$(".button-remove").toggle();
})
$(".button-add").click(function(){
var $row = $(this).closest('.row');
var $wsProbRow = $row.clone();
$wsProbRow.insertAfter($row);
console.log("Add-Button pressed");
})
$(".button-remove").click(function(){
$(this).closest('.row').remove();
console.log("Remove-Button pressed");
})
})
答案 0 :(得分:5)
使用动态元素时,您需要使用event delegation或将点击处理程序绑定到新创建的元素。
使用事件委托:
$(document).on("click", ".button-add", function(){
var $row = $(this).closest('.row');
var $wsProbRow = $row.clone();
$wsProbRow.insertAfter($row);
console.log("Add-Button pressed");
})
创建后绑定:
function onClick = function(){
var $row = $(this).closest('.row');
var $wsProbRow = $row.clone();
$wsProbRow.find(".button-add").on("click", onClick);
$wsProbRow.insertAfter($row);
console.log("Add-Button pressed");
})
$(".button-add").on("click", onClick);
答案 1 :(得分:1)
从文件中进行事件委托
$(document).on('hover', 'row',function() {
$(".button-add").fadeToggle(300);
})
$(document).on('hover','.input-group-btn',function(){
$('.button-bullet').toggle();
$(".button-remove").toggle();
})
$(document).on('click',".button-add",function(){
var $row = $(this).closest('.row');
var $wsProbRow = $row.clone();
$wsProbRow.insertAfter($row);
console.log("Add-Button pressed");
})
$(document).on('click','.button-remove',function(){
$(this).closest('.row').remove();
console.log("Remove-Button pressed");
})
答案 2 :(得分:0)
不要将您的点击绑定到这样的类,因为您需要动态添加内容,并且由于某些愚蠢的原因,所有浏览器都不会将点击绑定到页面加载后注入的html。
所以,请这样做:
$(document).on("click", ".button-add", function(){
var $row = $(this).closest('.row');
var $wsProbRow = $row.clone();
$wsProbRow.insertAfter($row);
console.log("Add-Button pressed");
})
$(document).on("click", ".button-remove", function(){
$(this).closest('.row').remove();
console.log("Remove-Button pressed");
})
答案 3 :(得分:0)