禁用单列的单击事件

任何人都可以让我知道如何禁用特定列的点击事件。

场景:我们在表格中显示了用户详细信息,一旦在表格行上单击,弹出对话框窗口将显示更多详细信息(调用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'); }); }); 
  
123
123
123
123

通过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() 。 这将在运行一次后自动取消绑定事件。 当然这意味着你必须在事后再次绑定事件(如果你需要的话)

http://api.jquery.com/one/

例如

 $('.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;}