【问题标题】:Error: Syntax error, unrecognized expression: dot (.)错误:语法错误,无法识别的表达式:点 (.)
【发布时间】:2026-01-14 12:10:01
【问题描述】:

我有一个像这样的 jquery 脚本:

$('.' + ajax_object.cartclass).on('click','a.add',function(e) {
        e.preventDefault();

        // get closest parent div 
        var cpd = $(this).closest('div.cartpn');
        cpd.addClass('code');

...

'.' 似乎是出于某种原因的问题,因此我一直收到语法错误。

错误:语法错误,无法识别的表达式:.

知道为什么吗?

【问题讨论】:

  • ajax_object.cartclass 的值是多少?像"..foo" 这样的字符串会抛出同样的异常。
  • 请完成你的标题
  • 它不会在标题中添加一个点。我用括号添加了它。
  • 错误信息表示ajax_object.cartclass为空。
  • 不,它不是,一切正常,它的价值是“maindiv”。这不是问题,它具有适当的价值。

标签: jquery


【解决方案1】:

确保正确定义ajax_object.cartclass

var ajax_object = {};
ajax_object.cartclass = "testing"; // The class you're trying to listen to.

假设您有一个已定义的 ajax_object.cartclass 类元素,其中包含 aadd 元素:

<div class="testing"><a class="add">Test this</a></div>

现在应该可以工作了:

$('.' + ajax_object.cartclass).on('click','a.add',function(e)
{
   console.log("hey"); // Console will output "hey" now.
   e.preventDefault();
});

之后您的代码应该可以正常工作了。

这是Demo

【讨论】:

  • 就是这样,不错! var ajax_object = {};清除了错误(尽管代码仍然有效)。
  • @OlliccaMindstorm 不客气,可以随时接受答案:)