PHP动态变量作为jQuery选择器

时间:2013-02-27 17:13:59

标签: php javascript jquery variables selector

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

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

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

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

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

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

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

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

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

3 个答案:

答案 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调用没有传递变量。