javascript - jQuery:toggleClass,多个 <td> 元素,只有一个突出显示

标签 javascript jquery button onclick toggleclass

HTML

<table cellpadding=10>
  <tr>
    <td id="g1" class="tdback">test 1</td>
    <td>
      <button onclick="clickHighlightTd(g1);">click</button>
    </td>
  </tr>
  <tr>
    <td id="g2" class="tdback">test 2</td>
    <td>
      <button onclick="clickHighlightTd(g2);">click</button>
    </td>
  </tr>
  <tr>
    <td id="g3" class="tdback">test 3</td>
    <td>
      <button onclick="clickHighlightTd(g3);">click</button>
    </td>
  </tr>
  <tr>
    <td id="g4" class="tdback">test 4</td>
    <td>
      <button onclick="clickHighlightTd(g4);">click</button>
    </td>
  </tr>
</table>

CSS

.tdback {
  background-color: #ffffff;
}

.tdhighlight {
  background-color: #999999;
}

JS

function clickHighlightTd(str) {
  $(str).toggleClass('tdhighlight');
}

我想点击一个按钮,同一行中的 td 应该将类切换为“.tdhighlight”,当点击任何其他按钮时,前一个(或所有其他 td)应该获得标准类(“。 tdback") 并且这一行中的 td 应该突出显示。

这是一个 JSFiddle。不幸的是,该代码在我的网站上有效,但在 JSFiddle 中无效。也许我错过了什么。

感谢您的帮助!


JSFiddle


最佳答案

您需要在选择器名称之前加上#,并且您必须首先从所有 td 中删除该类

function clickHighlightTd(str) {
  $("td").removeClass('tdhighlight');
  $("#"+str).addClass('tdhighlight');
}

作为替代方案,删除 onclick 属性并使用以下代码

$(document).ready(function(){
    $("button").click(function(){
      $("td").removeClass('tdhighlight');
      $(this).parent().find("td").addClass("tdhighlight");
    }); 
});

关于javascript - jQuery:toggleClass,多个 <td> 元素,只有一个突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37691422/

相关文章:

javascript - 使用 d3.js 在 svg 路径元素上绘制文本

javascript - 递归javascript算法中的return语句,如何一直返回堆栈?

javascript - 如何将 ASP.NET 处理程序的 url 传递给 jquery fileupload?

javascript - HighCharts 未在 Polymer 页面上呈现

javascript - 向站点添加搜索功能

javascript - 无法将我的复选框设置为 `alignSelf: ' flex-end '` or ` right : 0`

javascript - history.back() 清除表单值

javascript - 数组中的随机图像显示图像标签错误

html - Twitter Bootstrap 按钮下拉菜单在 IE9 中不起作用

java - 按钮阵列 (Android)