未捕获的语法错误:意外的令牌

时间:2014-01-22 09:36:32

标签: javascript jquery syntax-error

我还在学习jQuery。我正在尝试编写一个脚本,找到任何具有rel =“toggleSelect”的元素。它应该在我的函数中添加一个onclick属性,该属性启用或禁用所提供组中的所有复选框(“actions”数组)。我收到一条错误,上面写着“未捕获的语法错误:意外的令牌}”。我无法弄清楚为什么。我认为它与groupId perm输入的选择器有关。 TYIA !!!

$(function(){
        $('input[rel="toggleSelect"]').on("click", function(){
                var groupId = $(this).attr("id");
                var actions = new Array("read", "create", "reply", "moderate");
                for(var i=0;i<=actions.length;i++){
                    checkboxName = $('input[name="perms[" + groupId + "][" + actions[i] + "]"');
                    if(checkboxName.is(":enabled")){
                        checkboxName.prop("disabled", true);
                    } else {
                        checkboxName.prop("disabled", false);
                    }
                }
        }
    });

输入的一个例子:

<input type="checkbox" name="perms[1][read]" value="1" checked="checked">

2 个答案:

答案 0 :(得分:1)

在绑定点击事件处理程序时修复缺少的括号后,此行存在问题:

checkboxName = $('input[name="perms[" + groupId + "][" + actions[i] + "]"');

看起来好像你试图通过将某些变量的值与字符串文字连接来动态构建字符串,但是在连接之前你使用了错误的引号类型来结束字符串。当你实际需要单引号时,使用双引号会导致完全无效的jQuery选择器。

将其更改为以下内容:

checkboxName = $('input[name="perms[' + groupId + '][' + actions[i] + ']"');

答案 1 :(得分:0)

您错过了结束)。此外,您需要通过var关键字实例化checkboxName以及以其他方式连接选择器,最终代码应如下所示:

$(function () {
    $('input[rel="toggleSelect"]').on("click", function () {
        var groupId = $(this).attr("id");
        var actions = new Array("read", "create", "reply", "moderate");
        for (var i = 0; i <= actions.length; i++) {
            var checkboxName = $('input[name="perms[' + groupId + '][' + actions[i] + ']"');
            if (checkboxName.is(":enabled")) {
                checkboxName.prop("disabled", true);
            } else {
                checkboxName.prop("disabled", false);
            }
        }
    }); // <-- here
});