我有一个用户网格,我可以添加一个新用户到该网格.因为这就是我正在做的事情,当我拿起删除行事件时,我必须使用jquery委托将事件附加到上下文而不是页面.今天,我们应该更换delegate使用on.在下面的两个函数中,只有委托版本捕获了删除按钮的单击事件.为什么是这样?
//不起作用
$(".removeRow").on("click", function () {
var $this = $(this);
var $row = $this.closest("tr");
var username = $row.data("msurvey-username");
var url = GetHiddenField("msurvey-remove-employee");
dataService.removeEmployee(username, $row, removeEmployeeFromGrid, url);
});
Run Code Online (Sandbox Code Playgroud)
//不起作用
$("body").on(".removeRow", "click", function () {
var $this = $(this);
var $row = $this.closest("tr");
var username = $row.data("msurvey-username");
var url = GetHiddenField("msurvey-remove-employee");
dataService.removeEmployee(username, $row, removeEmployeeFromGrid, url);
});
Run Code Online (Sandbox Code Playgroud)
//这确实有用
$("body").delegate(".removeRow", "click", function () {
var $this = $(this);
var $row = $this.closest("tr");
var username = $row.data("msurvey-username");
var url = GetHiddenField("msurvey-remove-employee");
dataService.removeEmployee(username, $row, removeEmployeeFromGrid, url);
});
Run Code Online (Sandbox Code Playgroud)
对于事件代表团与.on()使用:
$(document).on("click", '.removeRow',function () {
//Your code ...
});
Run Code Online (Sandbox Code Playgroud)
笔记:
body绑定,因为可能会出现错误document即
$(document).on('event','selector',callback_function)
Run Code Online (Sandbox Code Playgroud)
所以将事件绑定调用更改为
$(document).on("click", ".removeRow", function () {
//Your code
});
Run Code Online (Sandbox Code Playgroud)
为了获得更好的性能,你应该用最接近静态容器代替document.
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |