我有
<button type="button" id="add">Add</button>
和
$('#add').click(function(e){}
作品
但是,当我有
时<li class="ui-state-default">
<button type="button" id="remove" class="removeBtn">Delete</button>
并且这样做了:
$('#remove').click(function(e){}
它不起作用。
我正在使用alert()测试两者,看看是否有函数。 第一个按钮动态添加字段并正常工作,而第二个按钮是特定添加字段的删除。 这里似乎有什么问题? o.O
答案 0 :(得分:5)
由于元素在DOM加载时不存在,因此click事件不会绑定到它
$('#remove').click(function(e){}
将此更改为
$(document).on('click','.remove',function(e){}
您无法使用id
删除按钮。id
仅适用于唯一元素。在这里,您需要为每个li
删除按钮。因此,请使用.remove
代替#remove
。(将ID更改为类)
答案 1 :(得分:3)
首先,如果您使用add
按钮添加多个元素,最终会有几个具有相同#remove
ID的元素,这不应该发生。
其次,使用事件委托将点击绑定添加到动态生成的元素。
$("#myUl").on("click", ".removeBtn", function(){
$(this).parent().remove();
});
答案 2 :(得分:1)
使用event delegation method动态添加jquery代码。
示例:
// attach a directly bound event
$( "#list a" ).on( "click", function( event ) {
event.preventDefault();
console.log( $( this ).text() );
});
// attach a delegated event
$( "#list" ).on( "click", "a", function( event ) {
event.preventDefault();
console.log( $( this ).text() );
});
答案 3 :(得分:0)
$('#remove').click(function(e){})
please try this below instead of above
$(document).on('click','.remove',function(e){})
or
// depreciated in jquery 1.7 and 1.9 pelase in jquery below 1.7
$('body .remove').live('click',function(e){})