我有这个HTML代码:
<a onclick='addSelector(this)'>
<img src='resources/img/produkti/test.jpg'>
<input type='checkbox' value='test.jpg' name='main_image'>
</a>
这是我的javascript:
function addSelector(elem) {
var a = document.getElementsByTagName('a')
for (i = 0; i < a.length; i++) {
a[i].classList.remove('selected')
}
elem.classList.add('selected');
elem.find( 'input[type=checkbox]').prop('checked', true);
}
因此,当点击“a”时,它会被“选中”。我想这样做,所以孩子的输入也被“检查”了。有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
epascarello的评论是正确的,但最终你的问题是elem
不是jQuery对象。在最后一行(或者在应用jQuery函数的任何地方)使用$(elem)
可能会取得更好的成功。
编写整个内容的一个更好的方法是在元素上有一个点击监听器,而不是这样:
// Listen for an anchor being clicked
$('a').on('click', function(event) {
// Remove selected class from all anchors
$('a').removeClass('selected');
// Add selected class to this element
$(this).addClass('selected');
// Make the relevant checkbox ticked
$(this).find('input[type="checkbox"]').prop('checked', true);
});
虽然如其他地方所述,标签比锚更好:)。
答案 1 :(得分:1)
用[{1}}替换锚点(无论如何都不用作锚点)。
默认情况下,这将具有您想要的行为。它还会将图像的alt文本(您应该添加)与屏幕阅读器的输入相关联。