经过数小时的挫折之后,我终于找到了导致错误的代码行,但现在我需要知道原因。
jQuery抛出了这个错误:Uncaught Error: Syntax error, unrecognized expression: .
我研究了它,发现这是一个Sizzle错误,当jQuery找不到引用的选择器时会发生这种错误。正如其他关于SO的问题所建议的那样,这实际上并不是我的jQuery代码中的错误,而是在其他地方。
我定义了一个变量用作加载内容的目标元素,并使用PHP动态定义变量,如下所示:
var $container = $(".<? echo $target ?>");
这不起作用,因为.
被标记为无法识别的表达式。但是,用静态字符串替换PHP变量可以正常工作:
var $container = $(".target");
这对我来说很难找到,因为我无法确定引发错误的行,而在浏览器的源代码中,上面的初始行看起来就像第二行。
为什么第一个例子不起作用?它与执行顺序有关吗?而且,我如何使用动态变量作为选择器?
答案 0 :(得分:2)
你必须使用
<?php echo $test; ?>
或快捷方式:
<?= $test ?>
答案 1 :(得分:0)
在执行此操作之前,您可以尝试trim($target)
。如果它有效,你可能在你的变量中有一些不需要的空格。
还考虑使用json_encode
将变量从php传递给javascript。像这样:
var selector = <?php echo json_encode($target); ?>;
var $container = $(selector);
这样不仅可以传递简单的字符串,还可以传递更复杂的变量结构(以及编码安全性)。
答案 2 :(得分:0)
原来我加载的页面没有传递给它的变量$ target。在初始页面上,使用值初始化$ target,因此源输出看起来像问题中指定的那样。但是,我正在使用新数据重新加载页面的ajax调用没有传递变量。