禁用单列的单击事件
任何人都可以让我知道如何禁用特定列的点击事件。
场景:我们在表格中显示了用户详细信息,一旦在表格行上单击,弹出对话框窗口将显示更多详细信息(调用ajax请求以从数据库中检索详细信息)。 但我们的约束是禁用与表关联的单个列的单击事件。
例如:
Name Id Phone Number Krupa 123 Click me
如果对文本(第1列和第2列)进行了单击,则会在单击事件时调用。 但是,如果用户点击超级链接(第3列),我想将其重定向到Google但不是点击事件(testing())。
任何人都可以帮助我实现这一目标。
尝试:
$(function() { $('table td').on('click', function() { if ($(this).index() == 2) { return false; // disable 3rd column } }); $('table tr').on('click', function() { alert('You click the row'); }); });
1 2 3 1 2 3 1 2 3 1 2 3
通过CSS完成此操作
table td:nth-child(2) { pointer-events: none; }
如何将点击事件添加到列中,然后在使用.unbind()单击事件后删除事件。 这将删除已单击的列的事件,但任何其他列仍应起作用。
$( '.column' ).on( 'click', function() { // do ajax stuff... // remove event $( this ).unbind(); });
如果你只想让click事件运行一次,理论上你可以使用jquery的.one()
特性代替.on()
。 这将在运行一次后自动取消绑定事件。 当然这意味着你必须在事后再次绑定事件(如果你需要的话)
例如
$('.selector').one('click', function(){ // your callback functionality });
您可以做的另一件事是以某种方式检查popup
是否处于活动状态,并阻止单击处理程序运行(如果是这样)
例如
$('.selector').on('click', function(){ if (check_if_popup_is_active) { return; } // otherwise continue with // your callback functionality });
您可以在回调中使用jQuery .unbind()
函数。
例如,请考虑下表
bar
我们可以在th.foo
上停止onclick
事件,如下所示
$('th').on('click', '.foo', function() { var that = this; // your AJAX call goes here success: function() { $(that).unbind('click'); } });
你可以通过CSS来做到这一点
you_css_selector {pointer-events:none;}