我正在尝试在PHP文件上使用jQuery show / hide脚本,它是这样的:
<?php
foreach ($empresas as $empresa) {
echo "<style type='text/css'>
.$empresa[teaserid] {
width:100%;
background-color: #CCC;
color: #000;
margin-top:10px;
border:1px solid #CCC;
position:relative;
vertical-align:middle;
}
.showhide$empresa[teaserid] {
display:none;
}
</style>";
echo '<script type="text/javascript">';
echo ' $(document).ready(function(){ ';
echo ' $(\".$empresa[teaserid]\").hide(); ';
echo ' $(\".showhide$empresa[teaserid]\").show(); ';
echo ' $(\".showhide$empresa[teaserid]\").click(function(){ ';
echo ' $(\".$empresa[teaserid]\").slideToggle(), 500; ';
echo ' }); ';
echo ' });';
echo '</script>';
echo "<a href='#' class='showhide$empresa[teaserid]'>$empresa[titulo]</a><br />
<div class='$empresa[teaserid]'>
TEST</div>";
}
?>
所以,我需要的是php中的foreach,它回应了新的CSS值和新的jQuery脚本。因为每个DIV需要不同的CSS和jQuery来关联,并能够显示和隐藏其内容。这种回声无效。 CSS没问题,但jQuery没有PHP $字符串。我能做什么? 或者有一种更简单的方法可以做到这一点?一个jQuery函数,它只涉及任何当前的div? 谢谢任何帮助我的人......
答案 0 :(得分:1)
值得一提:
您可以创建一个设置对象来保存变量。例如:
你的php:
<?php
$settings = array( 'settingA' => 'something',
'settingB' => 'something else',
'wat' => 9001 );
?>
将JS保存在js文件中 - scripts.js,无论如何。但是你可以将它添加到你的html文件中:
<script>
var settings = <?php echo json_encode( $settings ) ?>;
</script>
那输出什么?
var settings = {"settingA":"something","settingB":"something else","wat":9001};
因此,您可以将所需的服务器信息放在一个全局对象中(或将其作为应用程序对象的属性或其他内容)并可以访问它。
console.log( settings.settingA ); // returns "something"
进一步研究你的问题,不要忘记你不必留在PHP标签中。我并不主张在你的CSS中需要PHP,但这应该有助于你掌握这个概念:
<style>
<?php foreach ($empresas as $empresa): ?>
.showhide<?php echo $empresa['teaserid'] ?> {
display:none;
}
<?php endforeach; ?>
</style>
答案 1 :(得分:0)
在PHP中,您只能将变量放在双引号字符串中:
$a = 'Jon';
echo "Hi $a"; // Should output 'Hi Jon'
echo 'Hi $a'; // should output 'Hi $a'
所以,如果你想要Javascript阅读:
$(".Jon") // where Jon is the value of $a
然后在PHP中你可以这样输出:
echo '$(\".' . $a . '\")'; // Notice we are splitting the echo statement into a concatenation of 3 strings
答案 2 :(得分:0)
没有必要让PHP打印出每个项目的新CSS和Javascript块。如果您编写css并且javascript是一个好方法,那么它将全部为您处理。
要记住的另一件事是PHP是最基本的模板语言,所以如果你发现自己回应大量的代码,你可能会出错。取而代之的是:
<?php
$variable = "SOme value";
echo "Some very long huge string with <html> tags and stuff plus $variables";
?>
你可以这样做,多次打开和关闭标签。
<?php $variable = "SOme value"; ?>
Some very long huge string with <html> tags and stuff plus <?php print $variables; ?>
有了这个,这是一个重新编写的代码版本。 同样,你不需要使用硬编码的id制作PHP输出自定义Javascript,而你需要的是构建你的javascript,这样它根本就不需要知道任何东西,就像我一样。
<style type='text/css'>
/* The CSS is the same, so just have one class that is used on all the items. */
.empresa-teaser {
width:100%;
background-color: #CCC;
color: #000;
margin-top:10px;
border:1px solid #CCC;
position:relative;
vertical-align:middle;
}
</style>
<script type="text/javascript">
$(function(){
// Hide all of the teasers to start.
$(".empresa-teaser").hide();
// Add a handler for when the show/hide link is clicked.
$(".showhide-empresa-teaser").click(function(){
// When it is clicked, find the next item with the 'empresa-teaser' class
// and show it using a sliding toggle effect.
$(this).nextAll('.empresa-teaser:first').slideToggle(500);
});
});
</script>
<?php foreach ($empresas as $empresa) { ?>
<a href='#' class="showhide-empresa-teaser">
<?php print $empresa['titulo']; ?>
</a>
<br />
<div class="empresa-teaser">TEST</div>
<?php } ?>