Hello StackOverflow社区,我希望你们能在这里帮助我:
在我的主页上,我的DIV结构基本上有一个<div id="container">
,其<h1>
和<div id="content">
。
我还有一些JavaScript可以在点击<div id="content">
时向上/向下滑动<h1>
,方法是将一个类“.open”插入或移除到<div id="content">
。
现在我想创建使用PHP和条件,如果<div id="content">
具有类“.open”,则回显一些内容,如果没有,则为其他内容。
这就是我想要做的事情:
有这样的Javascript:
<script type="text/javascript">
$(function() {
$('.container h1').bind('click', function() {
if ($(this).parent().hasClass('open')) {
$(this).parent().find('.content').slideUp();
$(this).parent().removeClass('open');
return 0;
}
$(this).parent().parent().find('.content').slideUp();
$(this).parent().find('.content').slideDown();
$(this).parent().addClass('open');
})
});
</script>
这适用于此:
<div id="container">
<h1><a href="javascript:void(null)">Open the content</a></h1>
<div id="content">
<p>Content 1</p>
</div>
</div>
<div id="container">
<h1><a href="javascript:void(null)">Open the content</a></h1>
<div id="content">
<p>Content 2</p>
</div>
</div>
直到这里才能正常工作。现在我想用PHP创建一个条件,当有任何类有.open但我无法弄清楚如何编写这个。这就是我想出的:
<? if '#content'.class='open'{
echo include('column-right1.php');
echo include('column-right2.php');
}
else {
echo include('column-right3.php');
{
?>
如果这在PHP中是不可能的,那么javaScript和/或Jquery上的脚本会是什么呢?
答案 0 :(得分:4)
您必须了解客户端和服务器端脚本之间的基本区别。
PHP在您的服务器上运行,并在将页面发送给用户之前准备页面。这是服务器端,即应用程序的后端。如果你试图打开一个存在于服务器硬盘上的文件,那么这里发生的一切都在你的中央服务器上。
客户端收到您的请求后,您的HTML / CSS / Javascript被解析,这一切都是客户端的。这里的一切都与用户有关,没有任何东西可以回到服务器上。在此环境中与用户交互,例如询问他的鼠标位置或隐藏并显示不同的元素。
因此,简而言之,PHP无法与用户进行交互,但在一个地方是中心,而javascript可以在用户之间分发。
答案 1 :(得分:2)
你正在混合使用PHP和HTML / css。我建议您检查代码中的其他位置,以查看正在设置的类,并按此方式执行。否则,您需要使用输出缓冲,对于简单的HTML模板,它会变得非常混乱。
长话短说,你把两件事情混合在一起是不可能的。
答案 2 :(得分:1)
如果是我,我会使用jquery并做这样的事情:
if ($('#content').hasClass('aberto')) { $("#some_div_id").load('column-right1.php'); $("#other_div_id").load('column-right2.php'); }else{ $("#else_div_id").load('column-right3.php'); }
调整并尝试;)
首先应该在关闭标记之前在index.php中包含一个文件......例如:
<script type="text/javascript" src="http://www.daterraweb.com/js/onload.js"></script>
然后在文件onload.js中放置上面提到的代码......比如
$(document).ready(function(){
if ($('#content').hasClass('aberto')) {
$("#some_div_id").load('column-right1.php');
$("#other_div_id").load('column-right2.php');
}else{
$("#else_div_id").load('column-right3.php');
}
}
注意:如果要在插入.open类后立即加载内容,只需更改为:
<script type="text/javascript">
$(function() {
$('.container h1').bind('click', function() {
if ($(this).parent().hasClass('open')) {
$(this).parent().find('.content').slideUp();
$(this).parent().removeClass('open');
$("#else_div_id").load('column-right3.php');
return 0;
}
$(this).parent().parent().find('.content').slideUp();
$(this).parent().find('.content').slideDown();
$(this).parent().addClass('open');
$("#some_div_id").load('column-right1.php');
$("#other_div_id").load('column-right2.php');
})
});
</script>
答案 3 :(得分:0)
如果不将完整的HTML内容呈现给某些PHP函数,则无法在PHP中执行此操作。有些用户肯定会发布一些奇怪的框架,但这是错误的。
你必须明白,PHP会在HTML之前计算出来。所以这种方法根本不可能。你应该以其他方式工作。您应该基于PHP定义HTML类,而不是其他方式。在您的容器中使用“alberto”课程的条件是什么?
是这样的,你的JavaScript是动态添加这个类,然后你希望PHP对它采取行动吗?这带来了另一点,即PHP在这方面不是很有活力。 PHP需要重新加载才能显示结果(除非通过AJAX使用。)但是,如果你想根据类更改容器的内容..你也可以使用JavaScript和AJAX方法。这意味着,JavaScript将从远程PHP文件加载内容并更改容器的HTML内容。
一些阅读材料:
PS:您的if语句也不正确。正确的是:if ($foo == true)