基于类存在的PHP if语句 - 使用jQuery

时间:2017-09-15 11:59:07

标签: php jquery

我正在尝试,可能非常糟糕,根据div是否具有某个类,编写一个if语句来更改传递给foreach循环的php变量。

我的代码并非真正有效

<script>

if ($(".howto-one")[0]){
<?php $how_to_slice = array_slice($how_tos_full, 0, 3); ?>
} else {
<?php $how_to_slice = array_slice($how_tos_full, 3, 3); ?>
} 

</script>

<?php foreach($how_to_slice as $how_to) : ?>

任何想法?!

3 个答案:

答案 0 :(得分:0)

如果您的主要座右铭是将确切的div类名称更改为new,那么您可以使用jquery将现有的div类名称更改为新的名称。 添加以下脚本,只要你输入js代码。

<script>
(function($){
$(document).ready(function() {
$('.howto-one').attr('howto-one','new_class')
})(jQuery);
</script>

如果您使用此代码,则可以使用new_class而不是howto-one,但不会删除howto-one。 看看它..

答案 1 :(得分:0)

你尝试的组合不会起作用。

您需要创建PHP数组的字符串才能在JS函数中使用它们。因此使用json_encode

<script>
if ($(".howto-one")[0]) {
   var how_to_slice = <?php echo json_encode( array_slice($how_tos_full, 0, 3) ); ?>;
} else {
   var how_to_slice = <?php echo json_encode( array_slice($how_tos_full, 3, 3) ); ?>;
}
</script>

答案 2 :(得分:0)

您的内容在发送到浏览器之前在服务器上生成。就PHP而言,Javascript只是文本内容,因此就服务器而言,您的内容可能如下所示:

the quick brown fox
<?php // do stuff ;?>
jumped over
<?php // do more stuff ;?>
the lazy dog

始终会评估do suff do more stuff

Javascript是客户端的,因此在内容到达浏览器之前不会评估if/else测试。在这种情况下,Javascript实际上没有任何评估,无论哪种情况属实 - 在这些条件中没有内容,JS或其他内容(PHP不会回应任何内容)。

所以简而言之,你不能这样做。您可以执行相反的操作,并根据PHP代码生成JS,因为该代码是在服务器端生成的。例如(随机示例,不打算与您的代码或功能相匹配):

<?php if ($how_to_slice === true) { ?>
    <script>
        $('.howto-one').show();
    </script>
<?php } else { ?>
    <script>
        $('.howto-one').hide();
    </script>
<?php } ?>

您可能需要重新考虑您的方法。