2017-06-13 45 views
-1

我有這樣的一個表:如何改變顏色在一個TR在一個表上點擊

<table> 
     <tr> 
      <td>A1</td> 
      <td>A2</td> 
      <td>A3</td> 
      <td>A4</td> 
     </tr> 
     <tr> 
      <td>B1</td> 
      <td>B2</td> 
      <td>B3</td> 
      <td>B4</td> 
     </tr> 
</table> 

我想知道如果我可以單擊單元格,改變顏色(帶班):

.selected 
{ 
    background-color: green; 
} 

如果我點擊A1:

<table> 
     <tr> 
      <td class="selected">A1</td> 
      <td>A2</td> 
      <td>A3</td> 
      <td>A4</td> 
     </tr> 
     <tr> 
      <td>B1</td> 
      <td>B2</td> 
      <td>B3</td> 
      <td>B4</td> 
     </tr> 
</table> 

然後我點擊A3,它會是這樣

<table> 
     <tr> 
      <td>A1</td> 
      <td>A2</td> 
      <td class="selected">A3</td> 
      <td>A4</td> 
     </tr> 
     <tr> 
      <td>B1</td> 
      <td>B2</td> 
      <td>B3</td> 
      <td>B4</td> 
     </tr> 
</table> 

我做了什麼

<style> 
     .hover 
     { 
      background-color: red; 
     } 
     .select 
     { 
      background-color: green; 
     } 
</style> 

<script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $("td").mouseover(function() 
      { 
       $(this).addClass("hover"); 
      }); 
      $("td").mouseleave(function() 
      { 
       $(this).removeClass("hover"); 
      }); 
      $("td").click(function() 
      { 
       $(this).removeClass("hover"); 
       $(this).addClass("select"); 
      }); 
     }); 
</script> 

我不知道該如何使用JQuery做。提前致謝!

+0

對不起,但你有沒有搜索過一種方法呢? – doutriforce

+2

你到目前爲止做了什麼? –

回答

4

你可以做這樣的:

$('table td').on('click', function() { 
 
    $(this).parents('table').find('td.selected').removeClass('selected'); 
 
    $(this).addClass('selected'); 
 
});
.selected { 
 
    background-color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>A1</td> 
 
    <td>A2</td> 
 
    <td>A3</td> 
 
    <td>A4</td> 
 
    </tr> 
 
    <tr> 
 
    <td>B1</td> 
 
    <td>B2</td> 
 
    <td>B3</td> 
 
    <td>B4</td> 
 
    </tr> 
 
</table> 
 
<table> 
 
    <tr> 
 
    <td>C1</td> 
 
    <td>C2</td> 
 
    <td>C3</td> 
 
    <td>C4</td> 
 
    </tr> 
 
    <tr> 
 
    <td>D1</td> 
 
    <td>D2</td> 
 
    <td>D3</td> 
 
    <td>D4</td> 
 
    </tr> 
 
</table>

+0

值得注意的是(不知道在OP中有限的信息是否合適),這將不支持多個表。它會從ALL表中刪除'selected'類。 – BenM

2

您可以使用jQuery的on()addClass()功能,例如:

$('table').on('click', 'td', function(e) { 
 
    $(this).parents('table').find('td.selected').removeClass('selected'); 
 
    $(this).addClass('selected'); 
 
});
.selected { 
 
    background: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
     <tr> 
 
      <td>A1</td> 
 
      <td>A2</td> 
 
      <td>A3</td> 
 
      <td>A4</td> 
 
     </tr> 
 
     <tr> 
 
      <td>B1</td> 
 
      <td>B2</td> 
 
      <td>B3</td> 
 
      <td>B4</td> 
 
     </tr> 
 
</table>

+0

請問DV可以解釋嗎? – BenM

+0

這是最好的解決方案,而只有一個事件處理程序綁定到表,並且事件只需要冒泡一個級別。 –

3

做到像如下: -

$('table tr td').click(function(){ 
 
    $(this).parents('table').find('td.selected').removeClass('selected'); 
 
    $(this).addClass('selected'); 
 
});
.selected{ 
 
    background-color: green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
     <td>A1</td> 
 
     <td class="selected">A2</td> 
 
     <td>A3</td> 
 
     <td>A4</td> 
 
    </tr> 
 
    <tr> 
 
     <td>B1</td> 
 
     <td>B2</td> 
 
     <td>B3</td> 
 
     <td>B4</td> 
 
    </tr> 
 
</table> 
 
<br><br> 
 
<table> 
 
    <tr> 
 
     <td>A5</td> 
 
     <td class="selected">A6</td> 
 
     <td>A7</td> 
 
     <td>A8</td> 
 
    </tr> 
 
    <tr> 
 
     <td>B5</td> 
 
     <td>B6</td> 
 
     <td>B7</td> 
 
     <td>B8</td> 
 
    </tr> 
 
</table>

1

的4行jQuery的

$('td').click(function(){ 
    $('td.selected').removeClass('selected'); 
    $(this).addClass('selected'); 

}); 

事件偵聽器添加到該行。

刪除以前的元素的類

添加類點擊的元素

$('td').click(function(){ 
 
    $('td.selected').removeClass('selected'); 
 
    $(this).addClass('selected'); 
 
    
 
});
.selected{ 
 
    background-color:green; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>A1</td> 
 
    <td>A2</td> 
 
    <td>A3</td> 
 
    <td>A4</td> 
 
    </tr> 
 
    <tr> 
 
    <td>B1</td> 
 
    <td>B2</td> 
 
    <td>B3</td> 
 
    <td>B4</td> 
 
    </tr> 
 
</table>

+0

請參閱其他答案。點擊和類應該綁定到'td',而不是'tr'。 – BenM

+0

好的。但我注意到了標題。將改變它 –

+0

爲什麼不只是upvote已發佈的答案? – BenM

1

您可以使用jQuery。

$(document).ready(function(){ 
    $("td").click(function() { 
    $(this).parents('table').find('td.selected').removeClass('selected') 
    $(this).addClass("selected"); 
}); 
}); 
1

你也可以使用它。它將用於個人行

$('table td').click(function() { 
$(this).siblings().removeClass("selected"); 
$(this).addClass("selected"); 
}); 
相關問題