【问题标题】:Getting "Expected ',' or '{' but found '[selector]'" error出现“预期的 ',' 或 '{' 但发现 '[selector]'”错误
【发布时间】:2010-04-14 18:18:57
【问题描述】:

出现“预期为 ',' 或 '{' 但发现 '#44559'”错误。我的代码如下所示:

var valueid = $("div#center-box div#empid-textbox input").val(); //valueid=44559
if($("div#esd-names li#" + valueid).length > 0){
   //DO SOMETHING;
};

我正在获取输入到文本框输入字段中的值,如果是“44559” 似乎无法弄清楚为什么我会收到此错误。

我使用以下代码调用我的 valueid 检索函数。在特定文本框中按 ENTER 后,将检索文本框的值并针对列表项运行以查看它是否存在...如果存在 -- //DO SOMETHING//

$("div#center-box div#empid-textbox input.id").keypress(function(e){
  key = e.which;
  if(key===13){
    valueid = $("div#center-box div#empid-textbox input").val();
    if($("div#esd-names li[class*='" + valueid + "']").length > 0){
       //DO SOMETHING;
    };
  };
});

【问题讨论】:

    标签: jquery input selector


    【解决方案1】:

    您正在使用数字作为 id。这是不允许的。

    【讨论】:

    • 当我将它用作一个类时,我得到了同样的错误,除了它说“......但找到'0.44559'”
    • @sadmicrowave:那是因为“.44559”被解释为浮点数,整数点为 0。您会发现在许多编程语言中也是如此。
    • 但是这个数字只是 44559(没有小数)——不是 .44559——由于某种原因,firefox 自己给我的号码添加了前缀 0.。有什么建议吗?
    • 类选择器使用“.”在类名之前(即“.class-name”)。您需要在号码的开头附加一个字母或“_”。
    • 正如 kgiannakakis 所说——以数字开头的 id(或类名)无效,会导致解析器将其读取为数字而不是 ident 字符串。这里有更多关于变量命名的内容:codelifter.com/main/tips/tip_020.shtml
    【解决方案2】:

    将数字放入rel 属性中,并检查$("div#esd-names li[rel=" + valueid + "]")

    【讨论】:

    • 当我这样做时,我得到一个 firefox 错误提示:“属性选择器中值的预期标识符或字符串,但发现 '44559'”
    【解决方案3】:

    您要检查什么?如果列表项存在?

    */********* 已编辑 **********/*

    我尝试重新创建它,所以这就是我所拥有的:

    HTML:

    <div id="center-box">
                <div id="empid-textbox">
                    <input type="text" class="id" />
                </div> 
            </div>
            <div id="esd-names">
                <ul>
                    <li class="1">John Doe</li>
                    <li class="2">Jane Doe</li>
                    <li class="4">John Smith</li>
                    <li class="8">Jane Smith</li>
                </ul>
            </div>
    

    javascript:

    $(document).ready(function()
    {
                    $("div#center-box div#empid-textbox input.id").keypress(function(e)
                    {
                        key = e.which;
                        if (key === 13)
                        {
                            valueid = $("div#center-box div#empid-textbox input").val();
    
                            /*this is the only thing I changed*/
                            if ($("div#esd-names li[class*='" + valueid + "']") != null)
                            {
                                //DO SOMETHING;
                                $("div#esd-names li[class*='" + valueid + "']").css("background-color", "red");
                            }
                        }
                    });
    }
    

    它每次都会突出显示正确的 li .. 希望你可以使用这个 .. 抱歉,如果我没有任何帮助。

    【讨论】:

    • 是的......如果它确实存在,我会执行一个动作(在我的示例中是 DO SOMETHING 动作)。
    • 您可以尝试检查是否不为空: if($("div#esd-names li#" + valueid) != null) 或检查 id 是否包含您的值: if($( "div#esd-names li[id*=" + valueid + "])
    • 我刚刚编辑了最后一个示例 .. 它应该是 [id*= 而不是 [id8= ... 抱歉
    • 我想了这么多,做了 [id*= 当我尝试的时候......仍然没有工作
    • 其实你的语法还是错的(少了一些你需要的引文:........ ......... if($("div#esd-names li[id*='" + valueid + "']")....
    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2021-03-10
    • 2017-08-22
    相关资源
    最近更新 更多