Index: views/theme/theme.inc
===================================================================
--- views/theme/theme.inc	
+++ views/theme/theme.inc
@@ -556,20 +556,20 @@
       if ($fields[$field]->options['element_default_classes']) {
         $vars['field_classes'][$field][$num] = "views-field views-field-" . $vars['fields'][$field];
       }
-      if ($classes = $fields[$field]->element_classes($num)) {
-        if ($vars['field_classes'][$field][$num]) {
-          $vars['field_classes'][$field][$num] .= ' ';
-        }
-
-        $vars['field_classes'][$field][$num] .= $classes;
-      }
       $vars['field_attributes'][$field][$num] = array();
 
       if (!empty($fields[$field]) && empty($fields[$field]->options['exclude'])) {
         $field_output = $renders[$num][$field];
         $element_type = $fields[$field]->element_type(TRUE, TRUE);
         if ($element_type) {
-          $field_output = '<' . $element_type . '>' . $field_output . '</' . $element_type . '>';
+          // Element classes are only added to the field's HTML element, not to
+          // any surrounding table elements.
+          if ($classes = $fields[$field]->element_classes($num)) {
+            $classes = ' class="' . $classes . '"';
+          }
+
+          $field_output = '<' . $element_type . $classes . '>' . $field_output
+            . '</' . $element_type . '>';
         }
 
         // Don't bother with separators and stuff if the field does not show up.
