我正在尝试找到正确的选择器,以便在单击任何Hello单元格时将背景更改为蓝色,但如果单击Goodbye则不能。将类添加到Hello单元是一种可能的选择,但不是首选。
$(function() {
$('#myTable td').click(function() {
$('#myTable').addClass('unfocused');
});
});
.unfocused {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id='myTable'>
<tr>
<td>Hello</td>
</tr>
<tr>
<td>Hello</td>
</tr>
<tr>
<td>Hello</td>
</tr>
<tr>
<td>Hello</td>
</tr>
<tr>
<td>
<table id='otherTable'>
<tr>
<td>Something</td>
</tr>
</table>
</td>
</tr>
我试过了:
$('#myTable td').not('#otherTable td').click(....
$('#myTable td').not('#otherTable').click(....
那些不行。
附上一个小提琴。答案 0 :(得分:6)
也许这就是你所需要的。见下面的演示
有两种选择。
由于您正在检查<th>
的文字内容以执行特定操作,因此您可以使用jQuery .text()
来获取<th>
的内容。
Read more about jQuery .text()
您还需要使用JavaScript this
来引用当前点击的<th>
。
Read more about this keyword at MDN
选项1
此选项会在点击时将.unfocused
课程添加到所有<th>
。
$(document).ready(function() {
$('th').click(function() {
if ($(this).text() == "Hello") {
$(this).addClass('unfocused');
}
});
});
&#13;
.unfocused {
background: blue;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id='myTable'>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>
<table id='otherTable'>
<tr>
<th>Goodbye</th>
</tr>
</table>
</th>
</tr>
<tr>
<th>Hello</th>
</tr>
</table>
&#13;
选项2
此选项会在将.unfocused
课程添加到当前点击的<th>
之前从所有.unfocused
中删除<th>
课程。
$(document).ready(function() {
$('th').click(function() {
if ($(this).text() == "Hello") {
$('th').removeClass('unfocused');
$(this).addClass('unfocused');
}
});
});
&#13;
.unfocused {
background: blue;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id='myTable'>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>
<table id='otherTable'>
<tr>
<th>Goodbye</th>
</tr>
</table>
</th>
</tr>
<tr>
<th>Hello</th>
</tr>
</table>
&#13;
答案 1 :(得分:1)
您正在为父母提供背景资料。所以这个解决方案可能对你有用。
$('#myTable th').click(function() {
$('#myTable').addClass('unfocused');
$('#otherTable').addClass('white');
});
$('#myTable th').click(function() {
$(this).parent().addClass('unfocused');
$(this).parent().siblings().not(".check").addClass('unfocused');
});
答案 2 :(得分:1)
好的,明白了,我想你正在寻找像这样的东西
https://jsfiddle.net/smqdx20x/
$('#myTable th').not($('th > table#otherTable').parent()).not('table#otherTable th')
答案 3 :(得分:1)
您可以使用:contains
选择器:
$(function() {
$('#myTable th:contains(Hello)').click(function() {
$('#myTable').addClass('unfocused');
});
});
.unfocused {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table id='myTable'>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Hello</th>
</tr>
<tr>
<th>Goodbye</th>
</tr>
</table>