2016-03-29 19 views
-2

Dies ist mein Code-Schnipsel, mit dem ich ein Kontrollkästchen in der ersten Spalte einer Zeile ankreuze.Alle Zeilen außer 2 Spalten auswählen

$('[id*=GridView1] tr:not(:first)').each(function (index) { 

    // Selection of entire row 
    $(this).on('click', function (e) { 

     // Check status of checkbox 
     if ($(this).find("input:checkbox").attr('checked')) { 
      $(this).find("input:checkbox").attr('checked', false); 
     } 
     else 
      $(this).find('input:checkbox').attr("checked", true); 
    }); 
}); 

Aber ich will die Klick-Aktion auf bestimmte Spalten meiner Gridview zu vermeiden, zum Beispiel (letzte und dritte Spalte). Ich kann keine Auswahl für "dieses" Element treffen. Kannst du mir ein paar Beispiele geben? Bitte. Vielen Dank im Voraus

Antwort

0

Sie können den Index der Spalte in der Callback-Check auf diese Weise:

$('[id*=GridView1] tr:not(:first)').each(function (index) { 
    $(this).on('click', function (e) { 
     var index = $(event.target).closest("td").index(); 
     // you may now test if index is 3 or the last one 

Eine Alternative wäre, nicht auf die Zeilen zu binden, sondern an die Zellen

$('[id*=GridView1] tr:not(:first) td').each(function (index) { 
    var $cell = $(this); 
    $cell.on('click', function (e) { 
     var $row = $cell.closest("tr"); 

Beachten Sie, dass Sie möglicherweise die Delegierung verwenden, um die Anzahl der Bindungen zu reduzieren, wenn Sie große Tabellen haben.

0
$('[id*=GridView1] tr:not(:first)').each(function (index) { 
    var row = $(this); 
    var checkbox = row.find("input:checkbox"); 

    row.children('td:not(:last-child)').each(function(ndx) { //skip last cell 
     if(ndx == 2) return true; //skip third cell 

     $(this).on('click', function (e) { 

      // Check status of checkbox 
      if (checkbox.attr('checked')) { 
       checkbox.attr('checked', false); 
      } 
      else 
       checkbox.attr("checked", true); 
     }); 
    }); 
}); 
+0

Es ist eine gute Lösung. Vielen Dank. Aber wenn ich ein