2015-03-18 90 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