HTML的相关部分就像
<tbody id="results">
<tr>
<td>
<input type="checkbox">
<a href="c:\users\me\documents\visual studio 2013\Projects\myproj\Assets/someorg-somecategory-somepic.png" class="hidden">c:\users\me\documents\visual studio 2013\Projects\myproj\Assets/someorg-somecategory-somepic.png</a>
</td>
<td>someorg</td>
<td>somecategory</td>
<td>somepic.png</td>
</tr>
</tbody>
我的意图是a
元素旁边的input
元素可见或隐藏,具体取决于是否检查了input
。
似乎应该很简单:
$('#results input').change(function() {
console.log("ok, this function got called.");
this.siblings('a').toggleClass('hidden');
});
在$(function() { ... });
但是,这不起作用。通过选中或取消选中元素进行测试时,没有任何内容打印到控制台。知道为什么会这样吗?需要我发布更多代码吗?
答案 0 :(得分:1)
在复选框或id
class
<input type="checkbox" id="checkbox"/>
使用$(this)
而不是this
$(this).siblings('a').toggleClass('hidden');
工作演示:http://jsfiddle.net/omnzocqq/
<强>更新强>
根据我的想法,你忘了把table
换行放到tbody
。但是,如果您添加table
包装器元素并将this
修改为$(this)
,则代码可以正常运行。
因此,您无需向class
添加id
或checkbox
。
答案 1 :(得分:0)
问题是因为处理程序this
内是一个DOMElement。您需要将this
包装在jQuery对象中,以便能够在其上调用jQuery方法:
$('#results input').change(function() {
$(this).siblings('a').toggleClass('hidden');
});