使用JQuery变量引用类

Working with JQuery variable to reference a Class

本文关键字:引用 变量 JQuery 使用      更新时间:2023-09-26

我正在尝试使用类名引用Jquery中的checkbox元素。Classname是一个PHP变量,我首先将其引用存储在jquery变量中。当我使用这个变量引用我的类时,变量没有得到值。问题将通过以下代码变得清晰:

           <script>
            var ch='<?php echo $ch_cnt; ?>';
             $('input.'+ch).on('change', function (e) {
                if ($('input.'+ch+':checked').length > 3) {
                    $(this).prop('checked', false);
                    alert("allowed only 3");
                }
            });
          </script>

当我在开发人员控制台中检查它时,我会在变量ch中获取值,但在函数中,它没有显示值,而是将ch显示为文本。我怎么了?

试试这个

<script>
         $("input.<?php echo $ch_cnt; ?>").on('change', function (e) {
            if ($("input.<?php echo $ch_cnt; ?>:checked").length > 3) {
                $(this).prop('checked', false);
                alert("allowed only 3");
            }
        });
</script>

不要将<?echo json_encode($ch_cnt) ?>放在引号内。json_encode()为您在字符串周围加引号,因此您将在Javascript值中获得一组额外的引号。这里使用json_encode的全部意义在于,它将为Javascript文本输出适当的语法,您不需要引用它

var ch=<?php echo json_encode($ch_cnt); ?>;

由于要重复此代码,因此需要将Javascript放入IIFE中,因此ch的作用域仅限于该函数。

    <script>
    (function(ch) {
        $('input.'+ch).on('change', function (e) {
            if ($('input.'+ch+':checked').length > 3) {
                $(this).prop('checked', false);
                alert("allowed only 3");
            }
        });
    })(<?php echo json_encode($ch_cnt); ?>);
    </script>