在复选框上更改背景onchange:jquery

时间:2011-09-14 00:23:09

标签: jquery

我是jquery的新手,我有问题我想在我点击复选框时更改父div的背景颜色

请建议

谢谢

<script type="text/javascript">
    function chngbg(id){
        id2 = "d-" + id;
        $(id2).addClass('bg');
    }
</script>

<div class="dataDiv" id="d-<?=$row->id?>">
    <input type="checkbox" onchange="chngbg($(this).val());" value="<?=$row->id?>" name="cbox" /></span>
</div>

5 个答案:

答案 0 :(得分:2)

ID选择器需要具有前导#字符。

var id2 = "#d-" + id;

答案 1 :(得分:1)

如果你倾向于jquery,最好使用以下方法完成这些任务。

$("#yourcheckboxselector").change(function() {
    id = "#d-" + id;
    $(id).addClass('bg');
});

答案 2 :(得分:0)

您错过了ID选择器中的#

function chngbg (id) { 
    id2 = "#d-" + id; 
    $(id2).addClass('bg'); 
}

顺便说一下,你有一个额外的</span>似乎不属于它。

答案 3 :(得分:0)

你只需要清理布局,我添加了很多评论,因为你说你是新手。这会做你想要的。

$(function(){  //all of this will execute on page load

    $("[name='cbox']").click(function(event){ //this will bind to the click handler for your checkbox
        $(this) // this equals the checkbox that was clicked
            .parent() //this traverses up to the parent div
                    .addClass("bg"); //this adds the class

    });

});

答案 4 :(得分:0)

如果你想让它与你的例子类似,你可以将$ var的$ var设置为一个数组,然后将id添加到它:

<?
    $ids[] = $row->id;
?>
<div class="dataDiv" id="d-<?= $row->id; ?>">
    <input type="checkbox" value="<?= $row->id; ?>" name="cbox" />
</div>

然后,在您的脚本中,您可以执行以下操作:

<script>
    $(document).ready(function() {
        $('<?= '#' . implode(',#', $ids); ?>').change(function() {
            $(this).closest('div').addClass('bg');
        });
    });
</script>

或者,如果您不想使用$ ids var,可以通过类名(最佳方式)或name ='cbox'或其他内容进行选择。