2017-07-12 41 views
0

美好的一天, 我正在显示一个表格,其中的内容是从PHP/MySQL中提取的。 当鼠标悬停在桌子的头部时,会出现一个小的向下箭头,并在鼠标离开时消失。我希望能够通过点击标题对列进行排序。 出于某种原因,当我点击一些列(不总是相同!)时,我在控制台中看到了2次结果(请参见截图)。 这里是我的代码:单击标题时重复

<table id="db" style="white-space:nowrap;display:block;margin:5px;"> 
    <tr> 
     <th id="sortByName" style="border:1px solid black;text-align:center;">Name</th> 
     <th id="sortByFname" style="border:1px solid black;text-align:center;">Firstname</th> 
     <th id="sortByTel" style="border:1px solid black;text-align:center;">Tel</th> 
     <th id="sortByZip" style="border:1px solid black;text-align:center;">ZIP Code</th> 
     <th id="sortByDate" style="border:1px solid black;text-align:center;">Birth Date</th> 
    </tr> 
    <tbody> 
     ... 
    </tbody>  
</table> 

的Javascript部分:

$("#db th").hover(function() { 
     $(this).append("<i class='fa fa-caret-down' aria-hidden='true'></i>"); 
     $(this).click(function (e){ 
      e.preventDefault(); 

      var capture = $(this).attr('id'); 
      console.log("Captured: " + capture); 

    }, function() { 
     $(this).children("i").remove(); 
    }); 
} 

和控制台的屏幕捕获: enter image description here

我想用e.preventDefault();就解决了问题,但事实并非如此。 有人可以帮忙吗?提前致谢!

+0

何时将.hover()分配给#db th元素?一旦文件被加载,或者在另一个特定事件之后?在我看来,这种情况发生在错误的时间。所以请多显示一下你的javascript功能。 –

+0

只要显示表格,就会触发':hover'元素。这是我在'$(document).ready(function(){...});'中唯一的代码。我不确定这是时间问题。 – EricF

回答

0

我使用e.stopPropagation();e.stopImmediatePropagation();e.preventDefault();之后,它似乎工作正常。感谢您的帮助! :)