突出显示表中的选定行

时间:2014-08-07 09:40:18

标签: javascript jquery

我在html中有一张表。

<table>
  <tr>
    <td>
     <button onclick="someFunction()">
    </td>
    <td>data</td>
  </tr>
  <tr>
    <td>
     <button onclick="someFunction()">
    </td>
    <td>data</td>
  </tr>
  <tr>
    <td>
     <button onclick="someFunction()">
    </td>
    <td>data</td>
  </tr>
</table>

每一行都有动态ID,这是我的问题我要突出显示按下按钮的表格的当前行

我怎样才能实现它?

4 个答案:

答案 0 :(得分:4)

一个好的方法是改变你的标记,如

<table id="mytable">
    <tr>
        <td><button>click</button></td>
        <td>data</td>
    </tr>
    <tr>
        <td><button>click</button></td>
        <td>data</td>
    </tr>
    <tr>
        <td><button>click</button></td>
        <td>data</td>
    </tr>
</table>

#mytable tr.highlight{
    background-color: yellow;
}

然后

$('#mytable button').click(function(){
    $('#mytable tr.highlight').removeClass('highlight');
    $(this).closest('tr').addClass('highlight');
    someFucntion();
})

演示:Fiddle

答案 1 :(得分:0)

在jquery中使用closest()选择父<tr>

HTML

<tr><td><button onclick="someFucntion(this)"></td><td>data</td></tr>

JS

function someFunction(elm){
 $("tr.highLightClass").removeClass("highLightClass");// remove class if it is having someone
$(elm).closest("tr").addClass("highLightClass"); // here selected row

}

DEMO

如果您想使用“最佳做法”,请删除所有内联处理程序。试试这个:

$("button.someClass").click(function () {
    $("tr.highLightClass").removeClass("highLightClass"); // remove class if it is having someone
    $(this).closest("tr").addClass("highLightClass"); // here selected row

});

DEMO

答案 2 :(得分:0)

Onclick已经过时了,这是一个非常糟糕的做法。将一个类/ id添加到选择器..

<table>
<tr><td><button class="clickMe"></td><td>data</td></tr>
</table>

JavaScript:

$('body').on("click", ".clickMe", function(){
    var that = this;
    that.closest("tr").addClass("highlightMe");
});

为何使用?

如果你的表是动态生成的,或者是在旅途中添加行,你也应该观察新的动态元素。

答案 3 :(得分:0)

根据您的问题,我了解以下内容:当您点击内部按钮时,您希望突出显示相应的<tr>

这是一个JSFiddle,展示了我的答案:http://jsfiddle.net/WBison/2vkfn5uy/2/

基本上,使用事件对象来检索目标节点(按钮),然后是父节点(<td>),然后是父节点(<tr>)。然后使用您想要改变风格的任何方法。

代码:

按钮功能调用:<button onclick="someFunction(event)">

function someFunction(e) {
    e.target.parentNode.parentNode.style.backgroundColor = "blue";
}

希望这有帮助。