Jquery Checkbox All on Select框更改值问题 - 复选框是动态生成的(Ajax)

时间:2012-07-05 15:57:23

标签: jquery checkbox

我有一个大问题。这是代码:

<tr>
                                            <td width="50%">
                                                <select id="ptype"  name="ptype" class="required" style="width: 320px; float:left;" SIZE=14 onChange="selecttype(); CategoryGrab('<?php echo $_SERVER["SITE_HTMLROOT"];?>/sell/leftsell_catselect.php?idPtype='+this.value);">
                                                    <?php 
                                                        $namesub=$langid."_name";
                                                        $result = mysql_query ( "SELECT id, $namesub FROM ptype_new ORDER BY $namesub");
                                                            while($row = mysql_fetch_array($result)){
                                                                echo "<option value=".$row[0].">".$row[1]."</option>";
                                                            }?>
                                                </select>
                                            </td>
                                            <td width="50%">
                                                <div id="categories">
                                                    <div class="control-group" style="width: 320px">
                                                    <input type="checkbox" class="chkAll" name="chkall"> All <br/>
                                                    <?php 
                                                    $namecat=$langid."_name";
                                                    $result = mysql_query ( "SELECT categories.id, categories.$namecat FROM categories LEFT JOIN ptype_new ON ( ptype_new.catid LIKE concat( '%::', categories.id, '::%' ) ) WHERE ptype_new.id =12" ) or die(mysql_error());
                                                        while($row1 = mysql_fetch_array($result)){
                                                            echo '<input type="checkbox" name="'.$row1[1].'" value="'.$row1[0].'">'.$row1[1].'<br/>';
                                                        } ?>
                                                    </div>
                                                </div>
                                            </td>
                                        </tr>

这是JS代码:

<script type="text/javascript">
$(document).ready(function() {
    $('.chkAll').click(function() {
        $(this).parents('.control-group').children(':checkbox').not('.chkAll').attr('checked', this.checked);
    });

     $('.chkAll').parents('.control-group').children(':checkbox').not('.chkAll,:checked').click(function() {
        $(this).parents('.control-group').children('.chkAll').attr('checked', false);
    });
});

复选框的值来自SQL查询。 “CHECK ALL”复选框仅在第一个视图中起作用。 问题是值的变化取决于$ _POST $ id和....以及“CHECK ALL”不再起作用。

我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:0)

也许你的代码可以像这样编写:

$(document).ready(function() {
    $('#categories').on('change','.chkAll',function() {
        $('.chkAll ~ input[type="checkbox"]',this.parentNode).prop('checked', $(this).prop('checked'));
    });
    $('#categories').on('change','.chkAll ~ input[type="checkbox"]',function(){
        $(this).siblings('.chkAll').prop('checked',false);
    });
});