2012-05-30 44 views
0

我在我的脚本中使用hasClass方法,但它不按我想要的方式工作。 我的HTML表看起来像这样为什么我的代码不使用jQuery hasClass()工作?

<table id="sort"> 
      <tr class="nodrag nodrop"> 
       <td colspan=3><strong><a style="cursor:pointer;" class="toggle">Group 1</a></strong></td> 
       <td style="text-align: right;"><a class="button3" href="#" ><span> Edit </span></a> <a class="button3" href="#" ><span> Delete </span></a></td> 
      </tr> 
      <tr id="1" class="tr_group" style='display:none;'> 
       <td style="width:10px;" class="dragHandle">&nbsp;</td> 
       <td><a href=# style="margin-left: 20px;">Umair Iqbal</a></td> 
       <td><span style="font-size: 12px; color: #999; line-height: 100%;">A Student at TUM</span></td> 
       <td style="text-align: right;"><a class="button3" href="#" ><span> Edit </span></a> <a class="button3" href="#" ><span> Delete </span></a></td> 
      </tr> 
      <tr id="2" class="tr_group" style='display:none;'> 
       <td style="width:10px;" class="dragHandle">&nbsp;</td> 
       <td><a href=# style="margin-left: 20px;">Faryal Khan</a></td> 
       <td><span style="font-size: 12px; color: #999; line-height: 100%;">A Doctor at KMC</span></td> 
       <td style="text-align: right;"><a class="button3" href="#" ><span> Edit </span></a> <a class="button3" href="#" ><span> Delete </span></a></td> 
      </tr> 
</table> 

我的脚本如下

<script type="text/javascript"> 
     $(document).ready(function() { 
      // $('#sort tr:even').addClass('alt'); 
      $('#sort').tableDnD({ 
       onDrop: function(table, row) { 
        alert(row.id); 
       }, 
       dragHandle: ".dragHandle" 
      }); 
      $("#sort tr").hover(function() { 
       if($('#tr').hasClass('tr_group')) 
       { 
        $(this.cells[0]).addClass('showDragHandle'); 
        }, function() { 
        $(this.cells[0]).removeClass('showDragHandle'); 
       } 
      }); 
     }); 
</script> 

它不添加类showDragHandle到具有类“tr_group”上悬停效果行

什么我做错了任何建议?

在此先感谢

+1

没有#tr。它应该是$(“TR”) – Imdad

回答

1

你的选择是不正确的,你正在使用的哈希指示和ID。 此外,您正在使用不正确的元素符号为您的类加上前缀。

if($('#tr').hasClass('tr_group')) 

应该是:

if($('tr').hasClass('group')) 
0

.hover,你应该问:

if ($(this).hasClass("tr_group")) 

或者你可以只对已有的类的tr元素回应:

$("#sort").on({ 
    mouseenter: function(){ 
     $("td:first", this).addClass("showDragHandle"); 
    }, 
    mouseleave: function(){ 
     $("td:first", this).removeClass("showDragHandle"); 
    } 
}, "tr.tr_group"); 

当您只能回应您要定位的tr元素时,无需执行if语句。

+0

感谢您的快速回复:) –

0

有与tr

的ID你可能不想要的元素:

if ($(this).hasClass('group')) 
+0

感谢您的快速回应:)正是 –

+0

@Zoha Ali Khan不客气。 – jeroen

+0

非常感谢你:) –

0

相反的:

$(this.cells[0]) 

用途:

$('.dragHandle', $(this)) 

也改变:

$('#tr') 

要:

$('tr') 
0

变化

if($('#tr').hasClass('tr_group'))

if($(this).hasClass('tr_group'))

,因为你已经是我在trs的列表上进行讨论。

+0

感谢您的快速回复:) –