jQuery – 禁用特定td的实时点击事件

我有一个表,我通过.live()将click事件分配给每一行中的每个td(id =“min”)

视图:

 @Html.Action("GetMinAmount", "Stock", new { id = item.FoodID })  

控制器(显示图像或数量)

  // Function to return min amount, if null return "-" public string GetMinAmount(int id) { var food = dbEntities.FOODs.Single(f => f.FoodID == id); string output = ""; if (food.MinAmount == null) { output += "disable"; } else { return food.MinAmount.ToString(); } return output; } 

脚本:

  $('#min').live('click', function () { $editdialog.dialog('open'); }); 

但在td中我可以有2个条件,一个是“启用”状态,显示用户可以点击并编辑金额的金额。 如果金额为空,将显示一个图标,用户无法对其执行任何操作。

目前我无法删除已禁用图像的点击处理程序。 所以即使是假定被禁用的td也是可点击的…

我不知道如何才能删除“禁用”td的点击处理程序。

谁能帮忙??? 谢谢…….

在实时点击事件后添加此项

 $("img#disable").parents("td").die("click"); 

你可以尝试这样的事情:

 $('td').live('click', function (e){ if($(this).hasClass('disabled')) { e.prefentDefault(); e.stopPropagation(); } // do your stuff here }); 

我以某种方式改变我的控制器,以一种“肮脏”的方式来做它我会说?

  // Function to return min amount, if null return "-" public string GetMinAmount(int id) { var food = dbEntities.FOODs.Single(f => f.FoodID == id); string output = ""; if (food.MinAmount == null) { output += "\"disable\""; } else { output += "

" + food.MinAmount + "

"; } return output; }

只需将我的金额放入包装器中,然后将click事件分配给td,仅包含金额…

  $('.edit').live('click', function () { 

对此有何建议?

感谢所有的反馈…谢谢……

使用.removeAttr()删除内联onclick事件处理程序无法在Internet Explorer 6,7或8中实现所需的效果。为避免潜在问题,请改为使用.prop():

 $("#MyTd").prop("onclick", null); 

在我的情况下,e.stopImmediatePropagation()完​​成了这个伎俩

 $('.edit').live('click', function (e) { e.stopImmediatePropagation(); });