Jquery在for循环中绑定click事件
jquery bind click event in for loop
我试图在for循环中绑定单击事件,但任何删除按钮仅删除最后一个列表项。你知道为什么会这样吗?
for ( var key in editedPredef.predefinition) {
var listItem = $("<li></li>").addClass("ui-widget-content");
listItem.text("some text");
var removeListItem = $("<span class='"ui-icon ui-icon-closethick'"></span>");
removeListItem.click(function() {
listItem.remove();
});
listItem.append(removeListItem);
containerElement.append(listItem);
}
不要写在for循环中,只使用event-delegation
,
$(document).on('click','.ui-icon.ui-icon-closethick',function(){
$(this).closest('li').remove();
});
请注意,将这段代码放在for循环之外。
变化
removeListItem.click(function() {
listItem.remove();
});
removeListItem.click(function() {
$(this).parent('li').remove();
});
旁注:这将为每个元素绑定一个事件处理程序。您可以使用他的回答中提到的Rajaprabhu
之类的事件委托。但是,委托事件处理程序将比直接绑定事件处理程序慢。因此,问题在于您的应用程序中可能有多少这样的元素。如果要进行委托,最好将事件处理程序绑定到一个直接的父元素,这不是动态添加的,这样响应会更快。例如,如果事件处理程序不是动态添加的,并且不会从页面(如
<ul>
。$('ul').on('click','.ui-icon.ui-icon-closethick',function(){
$(this).parent('li').remove();
});
相关文章:
- 将click事件绑定到AngularJS指令中的子元素
- jQuery:click() 执行而不是绑定
- 在Angular中绑定剑道网格按钮's ng click
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 创建一个模态指令,并将click事件绑定到angular js中
- 在Ajax加载的Material上绑定Click事件
- AngularJS:如何将ng-click绑定到使用嵌入或对象元素插入的SVG图像
- 如何在 Javascript 中处理同一 dom 上的 click 和 dblclick 事件绑定
- ng-click在使用ng-bind-html-unsafe绑定的模板时不起作用
- 在AJAX中使用一次后重新绑定Click事件
- 在iframe上绑定click事件
- 带有绑定click事件的Javascript循环总是返回最后的结果
- 绑定.click和.blur事件处理程序
- 不能绑定click事件在selectable上
- Jquery在for循环中绑定click事件
- 数据绑定=“click"不能使用嵌套的淘汰视图模型
- 你能绑定.click()使它在onclick之前触发吗?
- 即使在 jquery 绑定('click')之后,使悬停也能正常工作
- 排序完成后取消绑定 click 事件
- 用jQuery绑定' click '事件:获取浏览器事件,而不是jQuery事件