有没有人知道为什么这段代码似乎不起作用? 我做错了什么?
使用JQuery 1.5.1。
JS代码:
$('#search_filters #discipline a').click(function(){
var checkbox = $(this).next(':checkbox');
if (checkbox.attr('checked')) {
checkbox.attr("checked", true);
} else {
checkbox.attr("checked", false);
}
$(this).children('img').toggleClass("active");
return false;
});
HTML:
<li>
<a href="#">
<img class="inactive" alt="Football" src="/images/disciplines/e9bc7681813110c/thumb.png">
</a>
<input type="checkbox" name="search_discipline[7]" value="1" class="search_discipline">
</li>
答案 0 :(得分:1)
应选中“已检查”属性的值:
if (checkbox.is(':checked')) { checkbox.attr("checked", "checked"); } else { checkbox.removeAttr("checked"); }
答案 1 :(得分:1)
检查属性更改只有两个有用的想法:
alert($({your target object}).attr({the attribute which added}));
这就是我在大多数情况下所做的事情。
答案 2 :(得分:1)
我自己就碰到了这个。似乎在jQuery 1.5.1和1.5.2中设置checked
属性有点儿麻烦。我对$(':checkbox').val(boolean)
好运(这更容易)。
更新:经过一番挖掘后,似乎webkit检查器实际上并未显示DOM中的checked
属性,但jQuery正确读取/写入。很奇怪。为我提供开发使用每晚webkit构建的权利。
答案 3 :(得分:0)
一些指示:
$('#search_filters #discipline a')
将选择从a
下降的#discipline
下降的所有#search_filters
元素。这是你的欠款吗?
您是否记得.next()
返回兄弟姐妹。
如果删除href='#'
?
您的点击事件是否会触发?