为什么jQuery的css()调用不起作用?
我不需要显示一个div,当在一个PHP结构。 我做:为什么jQuery的css()调用不起作用?
<?php
$a = $_POST['somefiledcomingFromform'] ; //equals 1
if (isset($_POST['submit'])) {
if($a==1){
// echo"<script>$(document).ready(function() { $('.delete').css(\"display\", \"none\")});</script>";
echo"<script>$('.delete').css(\"display\", \"none\");</script>";
}
}
echo"<div class='delete'>Delete me</div>";
?>
但它不工作,在div显示,如果.. 我究竟做错了不要紧什么线我里面去使用?
万分感谢
而不是把在JavaScript的,你为什么不这样做:
<?php
$a = 1;
if ($a == 1) {
echo '<div class="delete" style="display:none;">Delete me</div>';
} else {
echo '<div class="delete">Delete me</div>';
}
试试这个
<?php
$a=1;
if($a==1){
echo"<div class='delete' style="display:none;">Delete me</div>";
}
else{
echo"<div class='delete'>Delete me</div>";
}
?>
摆脱风格的引号 – nachito
非常抱歉,我发布了错误的代码。我编辑了这篇文章,并且有很好的一篇。正如你所看到的,php正在处理一个表单。再次抱歉。 – user974417
你可以这样做:
<?php $a=1; if($a==1) : ?>
<script>
$(document).ready(function() {
$('.delete').css("display", "none")
});
</script>
<?php endif; ?>
<div class='delete'>Delete me</div>
但我认为这是更好的做下面的事情:
<?php $a = 1; ?>
<script>
$(document).ready(function() {
$('.delete').css("display", "none")
});
</script>
<div class="<?php echo $a == 1 ? 'delete':'' ?>">Delete me</div>
可能是因为你的脚本在div加载之前运行。 试试这个:
<?php
$a=1;
if($a==1){
// echo"<script>$(document).ready(function() { $('.delete').css(\"display\", \"none\")});</script>";
echo"<script>$(function(){$('.delete').css(\"display\", \"none\");});</script>";
}
echo"<div class='delete'>Delete me</div>";
?>
我觉得隐藏是最好的。把CSS留给你的CSS文件?
echo"<script>$('.delete').hide();</script>";
编辑:和你的JavaScript呢!
为什么你使用jQuery来尝试和完成它?只需使用CSS。或者,至少使用jQuery的“live”来解决DIV的HIDE/SHOW问题。执行顺序很重要,我不认为PHP生成的脚本实际上会影响您在PHP条件之后构建和展示的潜水。
您的jQuery调用是在页面上打印将接收点击功能的元素之前完成的。
您可以使用自己的注释行代替直接调用。
echo"<script>$(document).ready(function() { $('.delete').css(\"display\", \"none\")});</script>";
如果您想使用未注释的呼叫,则需要在div标签后打印它。
<?php
echo"<div class='delete'>Delete me</div>";
$a=1;
if($a==1){
echo"<script>$(function(){$('.delete').css(\"display\", \"none\");});</script>";
}
?>
对于初学者,您实际上并不使用jQuery来更改PHP。 jQuery是客户端的,PHP是服务器端的,从来没有两个人见面。实际发生的情况是,您使用PHP来创建您的HTML文档,并且浏览器将创建一个jQuery将处理的DOM。
至于你的脚本有什么问题,你的代码不起作用的原因是因为这些语句是按顺序回显的。
下不起作用:
<script>
$('.delete').css("display","none"); // div.delete doesn't exist yet
</script>
<div class="delete">Delete me</div> <!-- Output *after* the jQuery call. -->
下不工作:
<script>
$(function(){ //wait until document.ready
$('.delete').hide(); //hide .delete after ready
});
</script>
<div class="delete">Delete me</div> <!-- Output after <script> but will be hidden after document.ready -->
除了这个问题,有几个 “代码味道”,将关我的事关于你的代码。请注意,这些都不是技术上的错误,但他们往往指示其他问题:
-
你使用jQuery修改DOM在一个非常“纯醇”的Javascript”的方式。
而不是更改CSS,使用jQuery的.hide()
调用。 -
您在PHP回声中单引号和双引号之间交替
您使用$('.delete').css("display", "none");
...为什么? -
您没有指定您正在使用的脚本的类型
当然,JavaScript是最常见的 - 但是明确指定脚本语言更好。 -
您使用的是隐含的分号码
这可能会在某些情况下导致意外的行为,应该避免。
非常抱歉,我发布了错误的代码。我编辑了这篇文章,并且有很好的一篇。正如你所看到的,php正在处理一个表单。再次抱歉。 – user974417
您需要在上面的答案中进行更改的是'$ a'和'if'条件的赋值。够简单。 – nachito