只有在包含输入类型=文本(而不是输入类型=无线电)时,JQUERY才会更改TD样式

时间:2016-12-24 00:34:37

标签: jquery css text input radio

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

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

但是,我需要将该样式仅应用于TD,如果它包含文本框而不是单选按钮。

我搜索过高和低,但是find()contains()等等似乎没有用。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

这是一个片段,过滤后的细胞有红色背景。您可以对它们应用任何样式。



$("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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

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

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

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

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