2015-03-18 86 views
0

我试图显示/隐藏某些内容,当我点击一个tr时,它以某种方式无法正常工作。这是简化的代码:

HTML:

<table> 
    <tr onclick="showDetails()"> 
     <td>Some text 
      <br> <span class="hiddenContent">Some hidden content</span> 

     </td> 
     <td>Some More Text 
      <br> <span class="hiddenContent">Some hidden content</span> 

     </td> 
    </tr> 
    <tr onclick="showDetails()"> 
     <td>Some text 
      <br> <span class="hiddenContent">Some hidden content</span> 

     </td> 
     <td>Some More Text 
      <br> <span class="hiddenContent">Some hidden content</span> 

     </td> 
    </tr> 
</table> 

的JavaScript:

function showDetails() { 
    $(".hiddenContent").hide(); 

    $(this).find(".hiddenContent").show(); 
} 
+0

通过“有点不工作”你的意思是'。 hiddenContent'应该显示,但它不是? – 2015-03-18 21:07:21

+1

这个''不指向被点击的元素。 – undefined 2015-03-18 21:07:25

+0

是KJ Price,这正是我的意思。 012huVohuman,它指的是什么? – Smiley 2015-03-18 21:09:14

回答

3

这是因为thiswindow对象。

如果你想this被绑定到点击的元素,你可以调用与.call() method的功能,并通过this

Example Here

<tr onclick="showDetails.call(this)"></tr> 

或者,您也可以只传递给this引用作为参数:

Example Here

<tr onclick="showDetails(this)"></tr> 
function showDetails(el) { 
    $(".hiddenContent").hide(); 

    $(el).find(".hiddenContent").show(); 
} 

更好的方法是使用unobtrusive JavaScript和附加一个事件监听器tr元素来代替:

Example Here

$('tr').on('click', function() { 
    $(".hiddenContent").hide(); 
    $(this).find(".hiddenContent").show(); 
}); 
+1

谢谢,这几乎解决了它。只要我能够这样做,我会接受它作为回答:) – Smiley 2015-03-18 21:17:17

相关问题