2014-05-16 56 views
0

外的工作,我有過的錶行循環和比較已經進入到什麼用戶正在試圖添加的信息。每。我在循環中有條件查找行中每個s的重複條目。取決於匹配的次數,用戶做出是/否的決定。如果用戶選擇是,則需要刪除當前行。我使用jQuery UI和我有讓對話框知道要刪除哪些行或具有循環。每次知道什麼是在對話框中選擇的問題。 的。每個循環如下所示:與變量jQuery UI的對話框

$('#tblSelectedList > tbody > tr').each(function() { 

下面是對話的代碼(在for循環):

   $('<div></div>').appendTo('body') 
       .html('<div><h6>Delete duplicate?</h6></div>') 
       .dialog({ 
        modal: true, 
        title: 'Delete message', 
        zIndex: 10000, 
        autoOpen: true, 
        width: 'auto', 
        resizable: false, 
        buttons: { 
         Yes: function() { 
          removeThis = 1; 
          blnAdd = 1; 
          $(this).dialog("close"); 
         }, 
         No: function() { 
          blnAdd = 0; 
          $(this).dialog("close"); 
         } 
        }, 
        close: function (event, ui) { 
         $(this).remove(); 
        } 
       }); 

,我使用刪除行的方法:

var id = $(this).attr('id').substring(7,$(this).attr('id').length); 
$('#tblSelectedList #row-'+id).remove(); 

一切都獨立工作,但我不能讓對話框,它包含的。每次循環知道對方在做什麼。

回答

0

我認爲你需要做的第一件事是設置一個ID爲表中的每一行。這樣你可以知道如何在以後找到一排。如果在創建實際表時無法做到這一點,那麼可以使用jQuery輕鬆完成。

下面是一個例子:

var rowsCount = 0; 
$('#tblSelectedList > tbody > tr').each(function() { 
    //setting the row ids to be something like: tblSelectedList_row0,tblSelectedList_row1,...,tblSelectedList_rown 
    $(this).attr("id","tblSelectedList_row" + (rowsCount++)); 
} 

這樣,就要在你的foreach循環您的實際工作排dupplicate detaction邏輯,你只是做這樣的事情:

$('#tblSelectedList > tbody > tr').each(function() { 
     //determine here is this row should be deleted 
     var rowShouldBeDeleted = true; 
    if (rowShouldBeDeleted){ 
     //here we invoke our promt for delete function passing the row identifier 
     //which is explained below 
     promptForDelete(this.id); 
    } 
} 

然後我會建議使用兩種功能:

  1. 一個會問這個問題「promtForDelete」。
  2. 另外一個實際刪除該行。

因此,對於第一個,您需要傳遞所需的所有信息以確定哪些行應該刪除「行ID」,以防用戶選擇「是」以及您想要的任何其他數據顯示在提示符中。

這裏是例子:

function promptForDelete(rowId){ 
    $('<div></div>').appendTo('body') 
      .html('<div><h6>Delete duplicate?</h6></div>') 
      .dialog({ 
       modal: true, 
       title: 'Delete message', 
       zIndex: 10000, 
       autoOpen: true, 
       width: 'auto', 
       resizable: false, 
       buttons: { 
        Yes: function() { 
         deleteRow(rowId); 
         blnAdd = 1; 
         $(this).dialog("close"); 
        }, 
        No: function() { 
         blnAdd = 0; 
         $(this).dialog("close"); 
        } 
       }, 
       close: function (event, ui) { 
        $(this).remove(); 
       } 
      }); 
} 

現在的第二功能「deleteRow」所有你需要做的就是找到與該ID匹配的行刪除。

下面是一個例子:

function deleteRow(rowId){ 
    $(rowId).remove(); 
} 

就是這樣....我希望這對你有意義。