我有一系列的复选框,一切正常,除了他们的默认行为已被无意改变,所以我不能再检查它们是奇怪的,因为我使用这个jquery的原因是为了突出他们周围的li首先检查了。
有什么想法吗?
//Tag cloud
$(".tag-cloud li").toggle(
function () {
//$(this).filter(":checkbox").attr('checked', 'true');
$(this).addClass("selected");
return;
//return $(this).filter(":checkbox").attr("checked", true);
},
function () {
//$(this).filter(":checkbox").attr('checked', 'false');
$(this).removeClass("selected");
return;
//$("#sortable").submit();
}
);
答案 0 :(得分:8)
你可以整体简化它,并希望通过使用简单的.click()
事件处理程序消除奇怪的行为,如下所示:
$(".tag-cloud li").click(function() {
var cb = $(this).find(":checkbox")[0];
$(this).toggleClass("selected", cb.checked);
});
无论最初处于什么状态,都可以工作,其中.toggle()
将关闭预先选中的框。
如果您希望<li>
本身可以点击,我们需要确保在单击实际复选框本身时(如果它已暴露)不会进入循环或反转切换,如下所示:
$(".tag-cloud li").click(function(e) {
var cb = $(this).find(":checkbox")[0];
//if the click wasn't from the checkbox already, toggle it
if(e.target != cb) cb.checked = !cb.checked;
$(this).toggleClass("selected", cb.checked);
});
答案 1 :(得分:0)
尝试删除return;
行。