0

经过几个小时的挫折,我终于找到了导致错误的代码行,但现在我需要知道原因。

jQuery 抛出了这个错误:Uncaught Error: Syntax error, unrecognized expression: .

我研究了一下,发现这是当 jQuery 找不到引用的选择器时发生的 Sizzle 错误。正如其他关于 SO 的问题所建议的那样,这实际上不是我的 jQuery 代码中的错误,而是在其他地方。

我正在定义一个变量以用作加载内容的目标元素,并使用 PHP 来动态定义变量,如下所示:

var $container = $(".<? echo $target ?>");

这不起作用,因为.被标记为无法识别的表达式。但是,用静态字符串替换 PHP 变量可以正常工作:

var $container = $(".target");

这对我来说很难找到,因为我无法确定引发错误的行,并且在浏览器的源代码中,上面的初始行看起来就像第二行一样。

为什么第一个示例不起作用?它与执行顺序有关吗?而且,如何使用动态变量作为选择器?

4

3 回答 3

2

你必须使用

<?php echo $test; ?>

或快捷方式:

<?= $test ?>
于 2013-02-27T17:16:33.477 回答
0

原来我正在加载的页面没有将变量 $target 传递给它。在初始页面上,$target 被初始化为一个值,因此源输出看起来与问题中指定的一样。但是,我使用新数据重新加载页面的 ajax 调用没有传递变量。

于 2013-02-27T18:14:04.017 回答
0

trim($target)您可以在执行此操作之前尝试。如果它有效,您的变量中可能有一些不需要的空格。

还可以考虑使用json_encode将变量从 php 传递到 javascript。像这样:

var selector = <?php echo json_encode($target); ?>;
var $container = $(selector);

这将使您不仅可以传递简单的字符串,还可以传递更复杂的变量结构(并且具有编码安全性)。

于 2013-02-27T17:19:44.533 回答