2011-10-05 46 views
0

我不需要顯示一個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顯示,如果.. 我究竟做錯了不要緊什麼線我裏面去使用?

萬分感謝

回答

2

而不是把在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>'; 
} 
+0

非常抱歉,我發佈了錯誤的代碼。我編輯了這篇文章,並且有很好的一篇。正如你所看到的,php正在處理一個表單。再次抱歉。 – user974417

+0

您需要在上面的答案中進行更改的是'$ a'和'if'條件的賦值。夠簡單。 – nachito

1

試試這個

<?php 
    $a=1; 
    if($a==1){ 
     echo"<div class='delete' style="display:none;">Delete me</div>"; 
    } 
    else{ 
     echo"<div class='delete'>Delete me</div>"; 

    } 
    ?> 
+0

擺脫風格的引號 – nachito

+0

非常抱歉,我發佈了錯誤的代碼。我編輯了這篇文章,並且有很好的一篇。正如你所看到的,php正在處理一個表單。再次抱歉。 – user974417

1

你可以這樣做:

<?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> 
0

可能是因爲你的腳本在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>"; 
?> 
0

我覺得隱藏是最好的。把CSS留給你的CSS文件?

echo"<script>$('.delete').hide();</script>"; 

編輯:和你的JavaScript呢!

0

爲什麼你使用jQuery來嘗試和完成它?只需使用CSS。或者,至少使用jQuery的「live」來解決DIV的HIDE/SHOW問題。執行順序很重要,我不認爲PHP生成的腳本實際上會影響您在PHP條件之後構建和展示的潛水。

0

您的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>"; 
} 
?> 
0

對於初學者,您實際上並不使用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 --> 

除了這個問題,有幾個 「代碼味道」,將關我的事關於你的代碼。請注意,這些都不是技術上的錯誤,但他們往往指示其他問題:

  1. 你使用jQuery修改DOM在一個非常「純醇」的Javascript」的方式。
    而不是更改CSS,使用jQuery的.hide()調用。
  2. 您在PHP回聲中單引號和雙引號之間交替
    您使用$('.delete').css("display", "none"); ...爲什麼?
  3. 您沒有指定您正在使用的腳本的類型
    當然,JavaScript是最常見的 - 但是明確指定腳本語言更好。
  4. 您使用的是隱含的分號碼
    這可能會在某些情況下導致意外的行爲,應該避免。