【问题标题】:JQUERY Change TD style ONLY IF IT contains input type = text (and not input type=radio)JQUERY 仅当它包含输入类型 = 文本(而不是输入类型 = 收音机)时才更改 TD 样式
【发布时间】:2017-05-09 14:57:08
【问题描述】:

我应用了如下样式,它对我很有效:

$("td[id='cellId']").css("text-align", "left");

但是,我需要将该样式仅应用于包含文本框而非单选按钮的 TD IF。

我搜索过 hi 和 low,但 find()contains() 之类的似乎不起作用。

【问题讨论】:

  • 你真的要使用id=吗? ID 应该是唯一的。
  • 你应该使用#cellId而不是[id=cellId]

标签: jquery css text input radio


【解决方案1】:

如果您需要过滤包含文本框而不是单选按钮的 TD-s,则需要使用 :has:not 组合:

 $("td:not(:has(input[type='radio']))").has("input[type='text']").css("background", "red");

这是一个 sn-p,其中过滤的单元格有红色背景。您可以对它们应用任何样式。

$("td:not(:has(input[type='radio']))").has("input[type='text']").css("background", "red");
td {
    border: 1px solid green;
    padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
 <tr>
  <td><input type="text">cell-1-1</td>
  <td><input type="radio">cell-1-2</td>
  <td><input type="text"><input type="radio">cell-1-3</td>
 </tr>
 <tr>
  <td><input type="radio">cell-2-1</td>
  <td><input type="text">cell-2-2</td>
  <td>cell-2-3</td>
 </tr>
</table>

【讨论】:

  • 这正是我想要的!谢谢!
【解决方案2】:

使用:has() 选择器匹配包含其他元素的元素。

$("td#cellId:has(:text)").css("text-align", "left");

【讨论】:

    【解决方案3】:

    首先请注意,您的$("td[id='cellId']") 相当令人惊讶:我可能猜想您有一些包含单元格ID 的var cellId,因此您应该使用$('#' + cellId)

    现在,由于您没有准确了解 td 中的(最终)嵌套元素,我们必须确保其中没有单选按钮。
    无论如何,假设我们有 var cellElem,您已根据需要填充(可能如上所示)。

    所以你可以使用这样的东西:

    if (!cellElem.find([type=radio]).length) {
        cellElemn.css(textAlign: 'left');
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多