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"]?>" >☆</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。
答案 0 :(得分:0)
当用户点击星标时 - 您需要将此数据保存到永久存储,例如您的后端。这是在页面刷新后能够重新获得此状态的唯一方法。
因此,在向客户端提供页面时,您会考虑另一个字段,例如'disabled'
,其中包含字符串'disabled'
可能是这样的:
<a href="#" id="<?=$azione["nome"]?>" class="preferiti" >
<span class="favourites-star <?=$azione["disabled"]?>" id="<?=$azione["idAzione"]?>" >☆</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
});
});
});
在保存状态时需要记住的另一件事是,您的页面可能会重新加载 - 因此您可能希望禁止它重新加载。