父项和子项选择,无法访问第一个父项 (jquery)
Parent and child selection, can't access first parent (jquery)
我在使用 jquery 选择 parent/child 时遇到问题。
我有一个看起来像这样的 HTML 页面:
<tr>
<input type='checkbox' /> //1st checkbox
<.. some stuff ../>
</tr>
<tr>
<td><input type='checkbox' /></td> //2nd checkbox
<td>
<select id='stateChanger' onchange='stateChanger();'/>
<option> ...</option>
...
</td>
</tr>
I want to check the checkbox of the line I changed with my select at the moment I changed it. But with the code hereinbelow I only check the first checkbox.
function stateChanger(){
$('#stateChanger').parent().parent().children('td').children("input[type='checkbox']").attr("checked","true");
}
如果有人有想法帮助我,我可以 post 完整的代码。
谢谢。维克多
您可以使用:
function stateChanger(obj) {
$(obj).closest("tr").find("td:first input[type='checkbox']").attr("checked", "true")
}
并将 this
添加到 onchange='stateChanger();'
所以它将是 onchange='stateChanger(this);'
这将检查第二个 <input type='checkbox' />
演示
function stateChanger(obj) {
$(obj).closest("tr").find("td:first input[type='checkbox']").attr("checked", "true")
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<input type='checkbox' />
</tr>
<tr>
<td><input type='checkbox' /></td>
<td>
<select id='stateChanger' onchange='stateChanger(this);' />
<option> ...</option>
<option>texst</option>
</td>
</tr>
</table>
$('#stateChanger').closest('tr').find("td input[type='checkbox']").attr("checked","true");
closest()
找到目标元素的最近父元素。
您可以像下面这样使用
function stateChanger(){
$('#stateChanger').closest('tr').find('td:eq(0)').find('input[type="checkbox"]').prop('checked', true);
}
table td{ border:1px solid #999; }
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td><input type='checkbox' /></td>
</tr>
<tr>
<td><input type='checkbox' /></td>
<td>
<select id='stateChanger' onchange='stateChanger();'>
<option value="0">Select Value</option>
<option value="1">Option 1</option>
</select>
</td>
</tr>
</table>
我在使用 jquery 选择 parent/child 时遇到问题。
我有一个看起来像这样的 HTML 页面:
<tr>
<input type='checkbox' /> //1st checkbox
<.. some stuff ../>
</tr>
<tr>
<td><input type='checkbox' /></td> //2nd checkbox
<td>
<select id='stateChanger' onchange='stateChanger();'/>
<option> ...</option>
...
</td>
</tr>
I want to check the checkbox of the line I changed with my select at the moment I changed it. But with the code hereinbelow I only check the first checkbox.
function stateChanger(){
$('#stateChanger').parent().parent().children('td').children("input[type='checkbox']").attr("checked","true");
}
如果有人有想法帮助我,我可以 post 完整的代码。 谢谢。维克多
您可以使用:
function stateChanger(obj) {
$(obj).closest("tr").find("td:first input[type='checkbox']").attr("checked", "true")
}
并将 this
添加到 onchange='stateChanger();'
所以它将是 onchange='stateChanger(this);'
这将检查第二个 <input type='checkbox' />
演示
function stateChanger(obj) {
$(obj).closest("tr").find("td:first input[type='checkbox']").attr("checked", "true")
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<input type='checkbox' />
</tr>
<tr>
<td><input type='checkbox' /></td>
<td>
<select id='stateChanger' onchange='stateChanger(this);' />
<option> ...</option>
<option>texst</option>
</td>
</tr>
</table>
$('#stateChanger').closest('tr').find("td input[type='checkbox']").attr("checked","true");
closest()
找到目标元素的最近父元素。
您可以像下面这样使用
function stateChanger(){
$('#stateChanger').closest('tr').find('td:eq(0)').find('input[type="checkbox"]').prop('checked', true);
}
table td{ border:1px solid #999; }
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td><input type='checkbox' /></td>
</tr>
<tr>
<td><input type='checkbox' /></td>
<td>
<select id='stateChanger' onchange='stateChanger();'>
<option value="0">Select Value</option>
<option value="1">Option 1</option>
</select>
</td>
</tr>
</table>