2011-10-13 34 views
0

我有一個表,我通過.live()的每一行jQuery的 - 禁用現場點擊事件特別是TD

查看在指定click事件給每個TD(ID = 「分」):

  <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,我可以有2個條件裏面,一個是「啓用」狀態,這顯示金額在那裏用戶可以點擊和編輯的數量。如果金額爲零,則會顯示一個圖標,用戶無法對其執行任何操作。

目前我不能刪除單擊處理殘疾人的形象。因此,即使其想禁用的TD是可點擊也...

我不知道如何刪除單擊處理爲「已禁用」只有TD。

任何人都可以幫助???謝謝.......

+2

我只是重讀,你可以針對ID,但ID都是唯一的,我:可能出現的問題,使用.prop()代替建議你用clas替換它們SES。 – jackJoe

回答

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; 
    } 

只是把我的量包裝,我分配click事件到TD只有量...

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

對此有任何建議?

欣賞所有反饋...謝謝....

5

添加這個活click事件之後

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

您好,我試過,但它不力的工作,是不是因爲它實際上不是「循環」,通過每個表TD呢? – shennyL

+0

不知道你的html現在是怎麼樣的,但首先你不應該多次使用元素的id。最好使用類似'$(「img.disable」)'的類。 反正我的代碼貼爭奪與ID禁用所有的img標籤,上升中的HTML DOM,直到它到達一個TD恩殺死click事件。所以你不必循環 –

2

你可以嘗試這樣的事:

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

你好,我的td沒有class = disabled .. – shennyL

+1

這不是一個複製粘貼的答案,它只是一個例子。將'$(this).hasClass('disabled')'更改爲您用來確定是否應單擊td的任何代碼。 –

0

卸下使用.removeAttr()不會實現在因特網所需的效果瀏覽器6,7或8。爲了避免內嵌onClick事件處理在我的情況e.stopImmediatePropagation

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

()的伎倆

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