我有点击处理程序,我想应用于表格中的行:
var myTable = $(this);
myTable.on('expand', 'tr', myHandler);
myTable.on('click', 'tr', function () {
$(this).trigger('expand');
});
function myHandler(e) {
// my action
}
这是一个非常简化的版本,但它会触发一个扩展行的jQuery方法。我想根据其内容从特定行中删除此处理程序。我有一个函数,每次单击行时都会触发。如果它与设置条件不匹配,则会触发一个方法,显示一条消息,通知用户该问题。我现在要禁用单击以展开此行。
function stopFunction(row) {
row.find('th[scope=row]').parents("#tableID").off('expand', 'tr', myHandler);
}
上面只是删除了所有行的点击以扩展功能。我不知道如何允许单击其他行,只是从这个单表行中删除处理程序。请注意,row.find('th[scope]')
是行的表格单元格,其第一个父元素是它的行,然后行的父元素是表格(@tableID)。
答案 0 :(得分:2)
function stopFunction(row) {
row.on("click", function (e) {
e.stopPropagation();
});
}
答案 1 :(得分:1)
如您所知,您的.off
来电将关闭整个事件处理程序。这是因为,使用on
(这是一个很好的做法),你只有一个事件处理程序,它响应所有匹配的元素(在你的情况下为tr
)。
我建议您使用类来代替。将类no-expand
添加到那些不应展开的tr
,并改为使用此事件处理程序:
myTable.on('click', 'tr:not(".no-expand")', function() { ... })
function stopFunction(row) {
row.addClass("no-expand");
}