0

我在 Wordpress 页面中加载了一些 jquery,jquery 可以按我的意愿工作,但现在我需要让 jquery 仅在存在 php 变量时才触发。

在php中我会这样做:

if( $foo ) {
    do this;
}

在 Wordpress 中,我将包含以下内容的文件 bla.js 排入队列:

jQuery(document).ready(function($){
    $('#someID.some-class > a').append('<div class="caption"></div>');
    $(".caption").text("Add this text");
});

如果 $foo 退出,我很困惑如何添加 php 检查。似乎有几种方法,但我最终所做的只是产生一个意外的令牌错误。

4

5 回答 5

0

将 Javascript 放在 PHP 条件中。

<script type="text/javascript>
...
<?php
if ($foo) : ?>

    jQuery(document).ready(function($){
        $('#someID.some-class > a').append('<div class="caption"></div>');
        $(".caption").text("Add this text");
    });

<?php endif ?>
...
</script>
于 2013-08-01T17:35:33.697 回答
0

Javascript 仅存在于客户端计算机的浏览器中;PHP 只存在于服务器上,远离他们的浏览器,所以你的 JS 不能只使用 PHP 变量。你可以通过两种方式做到这一点:

仅当变量为 true 时才包含 JS:

<?php if ($foo) : ?>
jQuery(document).ready(function($){
    $('#someID.some-class > a').append('<div class="caption"></div>');
    $(".caption").text("Add this text");
});
<?php endif; ?>

或者从 PHP 变量中设置一个 JS 变量:

jQuery(document).ready(function($){
    var foo = <?php echo $foo; ?>;
    if (foo) {
        $('#someID.some-class > a').append('<div class="caption"></div>');
        $(".caption").text("Add this text");
    }
});

请注意,无论哪种情况,页面都是使用 PHP 在服务器上“创建”的。一旦它显示在浏览器中,就不能使用 PHP 变量。如果您需要调用另一个 PHP 页面来检查其他内容,请查看 Ajax。

于 2013-08-01T17:35:54.117 回答
0

所以php是服务器端语言,javascript是前端语言。所以基本上 php 运行然后 javascript 运行......所以基本上如果 $foo 存在输出你想要运行的 jquery,它将显示在前端。如果它不存在,则输出您要运行的不同 jquery ......这里是一个简单的例子......

<!-- JS -->
var foo = <?php echo $foo; ?>
if (foo == 'test'){
} else {

}
// More PHP based
if ($foo == "test"){ ?>
javascript function() <!-- Note how I closed php -->
<? } else { ?>
javascript function2()
<? } ?>
于 2013-08-01T17:36:44.797 回答
0

PHP 和 jQuery(这是一个用 Javascript 编写的框架)在完全不同的范围内运行。

  1. PHP 在服务器上执行,生成的结果是 HTML 页面(可能包含一些 Javascript 代码)。

  2. 然后将生成的页面从服务器传递到浏览器,当浏览器呈现它时,jQuery/Javascript 将执行。

关键部分是 PHP 代码实际上是生成 HTML 和 Javascript 代码。

因此,如果您只想在 PHP 变量存在的情况下运行一些 jQuery 代码:

<?php
if( $foo ) {
?>
    <script type="text/javascript"> /* Some jQuery stuff here */ </script>
<?php
} else {
?>
    As an example, I generate this text in the "else" condition.
<?php
}
?>

如果$foo为真,那么 PHP 将生成以下 HTML:

<script type="text/javascript"> /* Some jQuery stuff here */ </script>

否则,PHP 将生成:

As an example, I generate this text in the "else" condition.

请记住,一旦 PHP 将页面交付给浏览器,它就不再运行,生成的结果将是“永久的”。 此时,页面被加载到浏览器 DOM(文档对象模型)中,并且只能通过 Javascript 更改 DOM。

于 2013-08-01T17:37:50.617 回答
0

通常我只是像这样创建一个隐藏的输入:

<input type='hidden' id='some_id' value='the_value'>

请注意,我没有添加 name 属性,因此它不会被发布(如果它恰好在表单中)。然后你可以通过它的 id 使用 jQuery 访问它。

if($('#some_id').val() == what_you_want)
{
   do_something();
}
于 2013-08-01T18:20:28.753 回答