-1

プロジェクトのバグを記録するための小さなスクリプトを作成しました

この画像には、ファイル名とそのバグが表示されます。次に、時間を節約するために javascript-jquery を使用しました。エラー (赤いもの) をクリックすると緑に変わり、修正されたエラー (緑のもの) をクリックすると赤に変わります。

ここに画像の説明を入力

問題は、間違ったエラーをクリックして、ページを更新しない限り元に戻せないことがあります。元。tags plugin(* it turn green *) のようなエラーをクリックすると、tags pluginもう一度クリックして赤に戻します。ページを更新してからもう一度クリックしない限り、元に戻りません。

コードを確認しましたが、何が問題なのかわかりません。

in while(エラーの取得)

while ($error = mysql_fetch_assoc($find_errors)) 

ここでエラーを出力します

<?php
switch ($error['status']) {
        case 'notfixed':
            $error_class    = "error";
            $error_link     = "fix".$error['id']."";
            break;
        case 'fixed':
            $error_class    = "success";
            $error_link     = "unfix".$error['id']."";
            break;
    }

    echo "
    <a href='".$_SERVER['PHP_SELF']."?del=".$error['id']."'>
        <span class='del'>×</span>
    </a>
    <input id='errorid".$error['id']."' value='".$error['id']."' type='hidden'>
    <input id='errorname".$error['id']."' value='".$error['name']."' type='hidden'>
    <div id='newdiv".$error['id']."'>
        <a id='".$error_link."'>
            <span class='".$error_class."'>".$error['name']."</span>
        </a>
    </div>
    <div class='clear'></div>";
?>

エラーを印刷する前に同じループ内でこれを印刷しましたが、これはjavascriptです

    <script type='text/javascript'>
        $('document').ready(function(){
            $("#fix<?php echo $error['id'] ?>").click(function(){

                var errorid = $("#errorid<?php echo $error['id']?>").val();
                jQuery.post('fix_error.php',{posterrorid : errorid},

                function(data, textStatus){
                    if(data == 1){
                        setInterval(function(){
                                $("#newdiv<?php echo $error['id']?>").html("<a id='unfix<?php echo $error['id']?>'><span class='success'><?php echo $error['name']?></span></a>");
                            }, 1000);
                    }else{
                        setInterval(function(){
                                $("#newdiv<?php echo $error['id']?>").text('error insert');
                            }, 1000);
                    }
                });
            });

            $("#unfix<?php echo $error['id'] ?>").click(function(){

                var errorid = $("#errorid<?php echo $error['id']?>").val();
                jQuery.post('unfix_error.php',{posterrorid : errorid},

                function(data, textStatus){
                    if(data == 1){
                        setInterval(function(){
                                $("#newdiv<?php echo $error['id']?>").html("<a id='fix<?php echo $error['id']?>'><span class='error'><?php echo $error['name']?></span></a>");
                            }, 1000);
                    }else{
                        setInterval(function(){
                                $("#newdiv<?php echo $error['id']?>").text('error insert');
                            }, 1000);
                    }
                });
            });
        });
    </script>
4

1 に答える 1

2

次のような構文を使用してみてください。

$("#fix<?php echo $error['id'] ?>").live('click',function(){
.....
});

$("#unfix<?php echo $error['id'] ?>").live('click',function(){
.....
});

初めてクリックしたときはhtmlコードを動的に置き換えているため、次回は動的に生成されたhtmlコードをクリックしても気付かれないため、.live関数を使用する必要があります。

参照

于 2013-08-05T11:40:21.570 に答える