当我从PHP回应它时,jQuery无法正常工作

时间:2013-07-08 15:51:05

标签: php javascript jquery

我只需要在PHP脚本的某些部分运行一些js,为了测试目的,我注释掉了php,所以我不会在这里显示它。

<!DOCTYPE HTML>
<html>
<head>
    <script src="jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body>
    <?php
        echo '<script>
        var width = $(window).width();<---Not working down too 1A
        var height = $(window).height();
        var widthSTR = width.toString();
        widthSTR = widthSTR.concat("px");
        var heightSTR = height.toString();
        heightSTR = heightSTR.concat("px");
        heightSTR = " ".concat(heightSTR);
        var size = widthSTR.concat(heightSTR);
        $("body").css({
            "background-size" : size, <---1A and above ^
            "background" : "url(p.jpg) 50% 0 no-repeat fixed"<---1B
        });
        </script>
        ';
    ?>
</body>
</html>

我标记为1B的行正常工作,显示背景图像。标记为不起作用的部分似乎没有效果,但是当我在php之外的Script标签中单独运行它时它工作正常。知道为什么/我错过了巨大的错误?提前谢谢。

4 个答案:

答案 0 :(得分:2)

将您的代码包装在内:

jQuery(function($) {
  // Put your whole code here
});

如果您正在触摸DOM,您应该将jQuery内容包装在该块中;这称为:the .ready() event用于文档加载。

答案 1 :(得分:2)

如果加载了完整的dom,你的代码应该被执行,如果它取决于正在加载的对象,宽度等等。

<!DOCTYPE HTML>
<html>
<head>
    <script src="jquery-1.9.1.min.js" type="text/javascript"></script>
</head>
<body>
    <?php
        echo '<script>
        $(document).ready(function(){
            var width = $(window).width();<---Not working down too 1A
            var height = $(window).height();
            var widthSTR = width.toString();
            widthSTR = widthSTR.concat("px");
            var heightSTR = height.toString();
            heightSTR = heightSTR.concat("px");
            heightSTR = " ".concat(heightSTR);
            var size = widthSTR.concat(heightSTR);
            $("body").css({
                "background-size" : size, <---1A and above ^
                "background" : "url(p.jpg) 50% 0 no-repeat fixed"<---1B
            });
        });
        </script>
        ';
    ?>
</body>
</html>

虽然我没理由你甚至需要回声出弦?为什么不直接在HTML中包含实际的Javascript和echo?

答案 2 :(得分:0)

你试过了吗?

if($condition){
?>
 <script>
        var width = $(window).width();
        var height = $(window).height();
        var widthSTR = width.toString();
        widthSTR = widthSTR.concat("px");
        var heightSTR = height.toString();
        heightSTR = heightSTR.concat("px");
        heightSTR = " ".concat(heightSTR);
        var size = widthSTR.concat(heightSTR);
        $("body").css({
            "background-size" : size,
            "background" : "url(p.jpg) 50% 0 no-repeat fixed"
        });
        </script>

    ?>
<?php
}

问题可能是您没有等待加载DOM,请尝试:

if($condition){
    ?>
     <script>
      $(function(){
            var width = $(window).width();
            var height = $(window).height();
            var widthSTR = width.toString();
            widthSTR = widthSTR.concat("px");
            var heightSTR = height.toString();
            heightSTR = heightSTR.concat("px");
            heightSTR = " ".concat(heightSTR);
            var size = widthSTR.concat(heightSTR);
            $("body").css({
                "background-size" : size, 
                "background" : "url(p.jpg) 50% 0 no-repeat fixed"
            });
    });
            </script>

        ?>
    <?php
    }

但请注意,这与php无关。

答案 3 :(得分:0)

我在希望操纵的元素内添加了“ contenteditable”。示例:

<span class="display" id="echotask" contenteditable>

然后,jQuery函数操纵了我的php脚本回显到文档中的html。考虑到jquery操纵了其他没有该关键字的元素,我也不知道为什么这是必要的,而普通的javascript也成功地操纵了没有关键字的HTML元素。