Javascript 这些jQuery自定义复选框是';t工作不正常

Javascript 这些jQuery自定义复选框是';t工作不正常,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我试图在我的站点上使用这些自定义MacOSX样式的复选框(它是一个jQuery插件),但当我选中一个复选框时,它实际上不会触发$('#input')。is(':checked')直到您取消选中,然后它就会变得一团糟 每当你选中一个框,我都会在选中的行中添加一些CSS,为它添加一个黄色背景。但是,我和他们有麻烦。下图对此进行了解释: 我不明白它为什么会这样。这是我的checkIt()函数,它在检查行时添加黄色背景: function checkIt(id) { if ($('#check

我试图在我的站点上使用这些自定义MacOSX样式的复选框(它是一个jQuery插件),但当我选中一个复选框时,它实际上不会触发
$('#input')。is(':checked')直到您取消选中,然后它就会变得一团糟

每当你选中一个框,我都会在选中的行中添加一些CSS,为它添加一个黄色背景。但是,我和他们有麻烦。下图对此进行了解释:

我不明白它为什么会这样。这是我的
checkIt()
函数,它在检查行时添加黄色背景:

function checkIt(id) {
    if ($('#checkbox_' + id).is(':checked')) {
        $('#' + id).addClass("selected");
    }
    else {
        $('#' + id).removeClass("selected");
    }
}
当复选框被点击时,我称之为onclick。以下是PHP生成的一些标记示例:

<span class="inbox_check_holder">
<input type="checkbox" value="96874" onclick="checkIt(96874)" id="checkbox_96874" class="inbox_check" />
<div class="star_clicker" id="star_96874" onclick="addStar(96874)" title="Not starred"><span id="starimg_96874" class="not_starred"></span></div>
</span>

我认为这与这个自定义复选框jQuery插件在
上添加额外元素有关

如果你想看,这里有很多例子。(显然)我使用的是“Safari”皮肤。

试试看

$(".inbox_check").live("change",function(e){
e.stopPropagation();
if($(this).is(":checked"))
 $('#' + id).addClass("selected");
else
 $('#' + id).removeClass("selected");
});

使用jQuery1.7,您可以使用

代表
示例

$("body").delegate(".inbox_check","change", function(e){
e.stopPropagation();  
    if($(this).is(":checked"))
     $('#' + id).addClass("selected");
    else
     $('#' + id).removeClass("selected");
});

我可以把它放在我的
checkIt()
函数中吗?很抱歉,我在回答中没有提到它,在使用上述代码时,您不需要复选框的
onClick
事件。我的PHP动态创建HTML,我必须在函数中传递ID,这就是我使用
onClick
的原因。我不太喜欢使用
onclick
,但由于需要传递ID,因此我不得不这样做。如果您正在动态生成html,请使用
live
,或
委托,
on
(jquery 1.7),更新答案,你也有类名,你不需要ID…但是我怎么突出显示所选行的背景呢?单击复选框时,应该更改消息行的背景。(您可以在上面我的屏幕截图中看到)并且,
id
不再定义。我知道我可以使用
.inbox\u check
进行
onchange
,但更改所选邮件背景的行的ID是我需要传递ID的原因。
$("body").delegate(".inbox_check","change", function(e){
e.stopPropagation();  
    if($(this).is(":checked"))
     $('#' + id).addClass("selected");
    else
     $('#' + id).removeClass("selected");
});