0

ユーザーが削除リンクをクリックした後、Jquery を使用して確認ボックスを表示しようとしています。削除リンクをクリックすると、post_id が URL に送信されます。これが設定されていて空でない限り、非表示の確認ボックスを表示するアニメーションをトリガーします。

これは私がこれまでに持っていたもので、現在は機能していません:

// if admin wants to delete a post check for post_id
if(isset($_GET['post_id']) && !empty($_GET['post_id'])){

    $delete_id = (int)$_GET['post_id'];
    $animate = true;

    echo '<script type="text/javascript">';
    echo 'var animate = '.$animate;
    echo '</script>';
}

GET 変数が正しく設定されています。

私のjqueryファイルには次のものがあります:

$(document).ready(function(){
    if(animate == true){
        $("#delete_confirm").fadeIn('3000','swing');

    }
});

そして確認ボックス:

<div id="delete_confirm">
                <p>Please confirm you want to delete this post.</p>
                <input type="button" id="delete" name="delete" value="confirm" />
            </div>

display:none;スタイルシートに設定されているもの。

animate変数が true に設定されているのに表示されないのはなぜですか?

ありがとう

4

4 に答える 4

2

display:none;divのプロパティの設定を解除し、.fadeOut(0)ページの読み込み時に呼び出すかopacity:0.0;、CSS ファイルで設定する必要があります。

さらに、このサーバー側コード インジェクションのすべてを含める代わりに、window.locationオブジェクトのsearchプロパティを使用してクライアント側で GET パラメータ チェックを処理し、特定のパラメータが正規表現一致で設定されているかどうかを検出できます。そうすれば、インライン JavaScript を使用する必要はありません。

var matches = window.location.search.match(/post_id/g);
if(matches && matches.length > 0)
{
// do animation
} else {
// do something else
}

このようなものは機能するはずです。個人的には、スクリプト タグやインライン JavaScript を挿入するよりも、これを行う方が好きです。

于 2013-04-23T15:55:17.507 に答える
0

PHP は、GET 変数が設定されているかどうかをチェックします。設定されている場合は、$animate を true に設定します。この後、Jquery は animate 変数のチェックを行います。true に設定されている場合、フェードインが発生するはずです。

私にとって、これは非常に紛らわしいです。これについては、もう少し調べてみようと思います。

  • 確認ボックスのあるページがあります。
  • ユーザーが削除ボタンを押すと、確認ボックス ( <div id="delete_confirm">) が jQuery スクリプトを使用して表示されます。
  • ユーザーがページの「削除」ボタンを押します。そこで何が起こるの?次の 2 つのオプションがあります。
    • AJAX リクエストを行います。
    • HTTP GET リクエストを行います。

コメントとコードに基づいて、HTTP GET リクエストを行っていると推測できます。この場合、ページをリロードします。はい、PHP は適切な値を取得し$_GET['post_id']、投稿は削除されます。

しかし、まったく新しい HTML ページが表示されます。そして、このページでは、div<div id="delete_confirm">は最初から見えません。これが、表示も非表示もされない理由です。

ソース コードを見ると、JS スクリプトを見つけることができます。<script type="text/javascript">...このコード$(document).ready(function(){...も機能することを願っています。しかし、新しくロードされた HTML ページで取得できます。

ここで間違っている場合は修正してください。

AJAX を使用する可能性がある確認ボックスを非表示にする必要があると思います。ただし、ページを変更してページから投稿を削除することもできます。

于 2013-04-23T15:46:06.063 に答える
-2

jQuery ドキュメントの引用: 「.fadeIn() メソッドは、一致した要素の不透明度をアニメーション化します。

.fadeIn() が実際に行うことは、要素の css 不透明度を 0 から 1 に変更することです。

CSS で要素にあると述べたdisplay: none;ので、実際に行っているのは、不透明度を1(CSS で設定していないと仮定して) からに変更し、表示を... に1設定したままにすることだけです。none表示されることはありません。

これは、表示タイプを「アニメーション化」できない場合 (「なし」から「ブロック」 - 不透明度を使用する場合) に.animate()は当てはまるようですが、ブロックをフェードできる/に当てはまりません。 CSSプロパティを使用してイン/アウトします。.fadeIn().fadeOut()display

悪いことに、私は2つを混同していました。

于 2013-04-23T15:51:40.470 に答える