2011-06-13 22 views
2

我想跳過表中的2個不同類別的2 tr。JQuery tr:不要跳過2個類名稱的trs

first class with class is .gridTitleRow and 2nd tr with class is .gridSpan。如何在下面的語法中跳過這些內容?

$.each($(".gridTable tr:not(.gridTitleRow)"), function(a, b){}); 

EDITED我使用每個像下面

$("#gridBtn").live("click", function (e) { 
    e.preventDefault(); 
    var indexArraay = []; 
    var flag = false; 
    $.each($(".gridTable tr:not(.gridTitleRow)"), function(a, b){ 

      var id = $("input.idField", b).val(); 
      var order = $("input[id='index']", b).val(); 
      var active = $("input[id='activeCb']", b).attr("checked"); 
      var deleteRow = $("input[id='deleteCb']", b).attr("checked"); 

      (deleteRow == true) ? flag = true : null; 

      indexArraay.push({ 
       "id": id, 
       "index": order, 
       "active": active, 
       "delete": deleteRow 
      }) 
    }); 

    if (flag == true) 
    { 
     $("#dialog:ui-dialog").dialog("destroy"); 

     var text = "Alert: Deleting footer Prent menu will delete all submenus and assigned pages to it."; 
     $('<div title="Confirmation:">' + text + '</div>').dialog({ 
      height: 'auto', 
      width: 350, 
      modal: true, 
      resizable: false, 
      buttons: { 
       Cancel: function() { 
        $(this).dialog("close"); 
       }, 
       Confirm: function() { 
        $(this).dialog("close"); 
        ProcessGrid(indexArraay); 
        ReloadGrid(); 
       } 
      } 
     }); 
    }else{ 
     ProcessGrid(indexArraay); 
     //ReloadGrid(); 
    } 

}); //End of gridBtn 

<script id="gridTemplate" type="text/x-jQuery-tmpl"> 
    <tr class="gridRow"> 
     <td class="gridSpan" colspan="5">${$data[0].Title}</td> 
    </tr> 
    {{tmpl($data) "#cellTemplate"}} 
</script> 
<script id="cellTemplate" type="text/x-jQuery-tmpl"> 
    <tr class="gridRow"> 
     <td class="cellTd "> 
      <input type="checkbox" id="deleteCb" /> 
      <input type="hidden" id="Id_ + ${num}" class="idField" value="${Id}" /> 
     </td> 
     <td class="cellTd"> 
      <input id="index" name="index" class="numberField" type="text" value="${IndexOrder}" /> 
     </td> 
     <td class="cellTd">${DisplayName}</td> 
     <td class="cellTd ">${UrlName}</td> 
     <td class="cellTd "> 
      <input type="checkbox" id="activeCb" {{if Active}} checked{{/if}} /> 
     </td> 
    </tr> 
</script> 

<span class="instructions">Only numeric value is allowed in IndexOrder textbox.</span> 
<div class="gridDiv"> 
<table class="gridTable" cellspacing="0" cellpadding="0"> 
    <tbody> 
     <tr class="gridTitleRow"> 
      <td class="iconLink width36">Delete</td> 
      <td class="iconLink width60">Sort Order</td> 
      <td class="iconLink widthAuto">Display Name</td> 
      <td class="iconLink widthAuto">Url Name</td> 
      <td class="iconLink widthAuto">Active</td> 
     </tr> 


    </tbody> 
</table> 
+1

你不能簡單地添加'not(.gridTitleRow,.gridSpan)'? – 2011-06-13 20:11:16

+0

@pendo,那不工作 – Pirzada 2011-06-13 21:05:02

+0

我更新了我的答案。 – Pointy 2011-06-13 21:26:02

回答

6
$.each($(".gridTable tr:not(.gridTitleRow, .gridSpan)"), function(a, b){}); 

在選擇器,該 「」 像 「或」。 等待 - 就像「和」一樣,但是因爲這裏的選擇器是在「not()」子句中,所以它是「不是這個而不是那個」,就像「不是(這個或那個)」。 我想我可以痛打點位:-)

編輯 —沒有我說服自己它的「或」一次。需要咖啡。

編輯再次 —有兩件事情:

  • 沒有理由叫 「$。每()」 的時候,第一個對象已經是一個jQuery對象:

    $(".gridTable tr:not(.gridTitleRow, .gridSpan)").each(function(i, elem) { 
    
  • 當通過「id」值搜索時,沒有理由使用屬性選擇器,並且沒有理由使用上下文,因爲「id」值必須是唯一的。使用「#ID」:

    var order = $('#index'); 
    
  • 請再次注意,這是無效使用一個頁面上的多個元素相同的「ID」值。如果您在許多表格行上使用相同的「ID」,那就錯了,您必須更改它。

  • jQuery團隊已棄用表格$(selector, base)而更喜歡$(base).find(selector)。在內部,圖書館總是執行這一轉變,所以你還不如保存它的麻煩:

    var deleteRow = $(b).find('#deleteCb'); 
    
  • 這不是完全清楚什麼是「標誌」是應該做的,但你可能已經忘記了申報。也許這是一個全局變量。

  • 你的評論說「空tr傳遞未定義」,但我不知道這意味着什麼。如果選擇器找不到<tr>元素,則「每個」循環將不會發生。如果您描述的是未定義的內容,則可能有所幫助。

+0

這是行不通的。空tr傳遞undefined。 – Pirzada 2011-06-13 21:04:23

+0

等一下,我會更新答案。 – Pointy 2011-06-13 21:17:03

+0

我編輯了我的問題並添加了更多詳細信息。希望一切都會清楚。如果我可以改進它,請讓我 – Pirzada 2011-06-13 21:35:28

1

我可能把它拿出來選擇,讓您保持您的有效querySelectorAll選擇:

$(".gridTable tr").not('.gridTitleRow,.gridSpan').each(function(a, b){}); 

,如果有你過濾只有一個類名的選擇將是有效的爲qsa使用:not(),但有兩個,它變得無效,並默認爲Sizzle的基於JavaScript的引擎。

+0

是的,這可能是一個非常好的主意,特別是在一個大的DOM節點頁面上。 (和表格的頁面往往很大。) – Pointy 2011-06-13 20:20:40

+0

您的解決方案無法正常工作。空tr正在通過。我在我的問題中添加了更多信息。 – Pirzada 2011-06-13 21:09:18

+0

@Pointy:是的,我正在個人追求讓人們遠離專有選擇器,每次都是SO問題。 ; o) – user113716 2011-06-13 21:38:01