我有一个表,我通过.live()将click事件分配给每一行中的每个td(id =“min”)
查看:
<td id="min">
@Html.Action("GetMinAmount", "Stock", new { id = item.FoodID })
</td>
控制器(显示图像或数量)
// 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 += "<img id=\"disable\" src=\"../../Content/Add_in_Images/disable.png\" alt=\"disable\" style=\"background-image: none\"/>";
}
else
{
return food.MinAmount.ToString();
}
return output;
}
脚本:
$('#min').live('click', function () { $editdialog.dialog('open'); });
但是在td中我可以有两个条件,一个是“启用”状态,它显示用户可以点击并编辑金额的金额。如果金额为空,将显示一个图标,用户无法对其执行任何操作。
目前我无法删除已停用图片的点击处理程序。因此,即使是假定被禁用的td也可以点击...
我不知道如何才能删除“禁用”td的点击处理程序。
任何人都可以帮忙???感谢.......
答案 0 :(得分:5)
在实时点击事件后添加此内容
$("img#disable").parents("td").die("click");
答案 1 :(得分:2)
$('td').live('click', function (e){
if($(this).hasClass('disabled'))
{
e.prefentDefault();
e.stopPropagation();
}
// do your stuff here
});
答案 2 :(得分:0)
我会以某种方式改变我的控制器,以一种“肮脏”的方式来做它?
// 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 += "<img class=\"disable\" src=\"../../Content/Add_in_Images/disable.png\" alt=\"disable\" style=\"background-image: none\"/>";
}
else
{
output += "<h4 class=\"edit\">" + food.MinAmount + "</h4>";
}
return output;
}
只需将我的金额放入包装器中,然后将点击事件分配给仅包含金额的td ...
$('.edit').live('click', function () {
有关此问题的任何建议吗?
感谢所有反馈......谢谢......
答案 3 :(得分:0)
使用.removeAttr()删除内联onclick事件处理程序无法在Internet Explorer 6,7或8中实现所需效果。为避免潜在问题,请改为使用.prop():
$("#MyTd").prop("onclick", null);
答案 4 :(得分:0)
在我的情况下,e.stopImmediatePropagation()做了伎俩
$('.edit').live('click', function (e) {
e.stopImmediatePropagation();
});