尽管页面自动刷新,但是当我点击它时隐藏跨度

时间:2017-05-23 21:01:41

标签: javascript php jquery sql

html(quotazioni.php)

<?php 
    $azioni = $db_handle->runQuery("SELECT idAzione,nome,prezzo FROM azioni");
    foreach($azioni as $azione){
?>          

                        <tr>
                            <td style="text-align:center;border-bottom:#F0F0F0 1px solid;"><a href="azione.php?idAzione=<?=$azione["idAzione"]?>"><?php echo $azione["nome"]; ?></a></td>
                            <td style="text-align:center;border-bottom:#F0F0F0 1px solid;"><?php echo $azione["prezzo"]; ?></td>
                            <td style="text-align:center;border-bottom:#F0F0F0 1px solid;">
                                <a href="compraVendi.php?action=segui&idAzione=<?=$azione["idAzione"]?>" id="<?=$azione["nome"]?>" style="text-decoration:none;" class="preferiti" >
                                    <span style="color:yellow;font-size:200%;" id="<?=$azione["idAzione"]?>" >&star;</span>
                                </a>
                            </td>
                        </tr>
<?php 
    }
?>

php(compraVendi.php)

case "segui":
            $db_handle->query("INSERT INTO preferiti (visibile,idAzione) VALUES (1,'".$_GET["idAzione"]."')");  
            header("location: quotazioni.php");
            break;

javascript

    $(document).ready(function(){
    <?php
        $preferiti = $db_handle->runQuery("SELECT * FROM preferiti");
        foreach($preferiti as $preferito){
            if ($preferito["visibile"]==1){ 
    ?>          
            var element = document.getElementById(<?=$preferito["idAzione"]?>);
            element.hide();
    <?php
            }
        }
    ?>
});

点击后我必须隐藏链接内的跨度。如果页面包含自动刷新,如何禁用跨度?我提供了一个不起作用的代码示例,请帮我解决问题。在sql数据库中,表preferiti包含idPreferito,visibile和idAzione。如果我点击相应的首选项,则行preferito包含1。

1 个答案:

答案 0 :(得分:0)

当用户点击星标时 - 您需要将此数据保存到永久存储,例如您的后端。这是在页面刷新后能够重新获得此状态的唯一方法。

因此,在向客户端提供页面时,您会考虑另一个字段,例如'disabled',其中包含字符串'disabled'

可能是这样的:

<a href="#" id="<?=$azione["nome"]?>" class="preferiti" >
    <span class="favourites-star <?=$azione["disabled"]?>" id="<?=$azione["idAzione"]?>" >&star;</span>
</a>

考虑不使用insline样式,而是使用类来设置样式 - 这是一般的好习惯。

.favourites-star {
    color:yellow;
    font-size:200%;
}

在处理事件时,类也更好。

$(document).ready(function(){
    $('.prefereti').on('click', function(evt){
        // Save the state first and then disable the star - try it yourself!
        $.post()
            .done(function () {
                 $(evt.currentTarget).addClass('disable');
            })
            .fail(function () {
                 // Don't disable - instead show error
            });
    });
});

在保存状态时需要记住的另一件事是,您的页面可能会重新加载 - 因此您可能希望禁止它重新加载。