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 += ""; } 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 += ""; } 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(); });