-1

我制作了一个小脚本来记录我的项目中的错误

这张图片会显示一个文件名和它的错误。然后我使用 javascript-jquery 为自己节省了一些时间。所以当我点击一个错误(红色的)它会变成绿色,如果我点击固定的错误(绿色的)它会变成红色。

在此处输入图像描述

问题是有时我点击了错误的错误,除非我刷新页面,否则无法将其返回。前任。如果我点击错误tags plugin(*它变成绿色*)然后我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 回答