我正在开发一个MVC应用程序。 我正在尝试开发一个评论框。
我已经编写了一段代码,在这段代码中,我编写的过程就像, 当用户点击显示评论链接评论时,会出现。
现在,我想更改功能,不点击show Comments按钮,所有评论都应加载。
我正在尝试这样做,但它不起作用。
显示评论链接代码
<div class="span12" style="margin-left:0px; margin-top:50px;">
<span style="font-size:16px;">
@Ajax.ActionLink("Show Comments", null, null, null, new { id = Model.Id, @class = "addremark" })
<div class="RemarkBox"></div>
<span class="CommentAdd"></span>
</div>
我想在页面加载时加载评论,我希望在加载页面时通知显示加载,但我仍然想点击显示评论链接。
$(document).ready(function () {
$('a.addremark').click(addremarkClick);
// Call on load also
addremarkClick();
});
function addremarkClick(event)
{
var url = '@Html.Raw(Url.Action("ShowCommentBox", "Comment", new { Id = "idValue", EntityType = "Payment" }))';
if (typeof event !== 'undefined') url = url.replace("idValue", event.target.id);
else url = url.replace("idValue", $('a.addremark')[0].id);
$('.RemarkBox').load(url);
$(this).closest('div').find('div.RemarkBox').show();
return false;
}
function addremarkClick()
{
alert("Clciked");
var url = '@Html.Raw(Url.Action("ShowCommentBox", "Comment", new { Id = "idValue", EntityType = "Payment" }))';
if (typeof event !== 'undefined') url = url.replace("idValue", event.target.id);
else url = url.replace("idValue", $('a.addremark')[0].id);
$('.RemarkBox').load(url);
$(this).closest('div').find('div.RemarkBox').show();
return false;
}
答案 0 :(得分:1)
最好的方法是首先加载页面然后使用js,获取可用的显示注释链接列表$('a.addremark')
,然后不是触发click事件,而是可以遍历集合然后生成AJAX调用,以便在运行时加载注释,而无需用户单击链接。
此外,在特定的持续时间之后进行SetTimeOut
javascript调用以刷新页面上的注释将非常有用,因此用户不必刷新页面或单击链接以查看更新的注释。您可以看到Stackoverflow中使用的类似方法突然要求我单击以重新加载帖子以查看编辑。所以它会提供更好的可用性。
修改强>
以下可以是步骤
页面加载完成后,文档准备就绪后,调用一个javascript方法,查找该类与
addremark
的所有链接。对于每个链接元素,您将与其关联为其提取评论的帖子ID
使用postid进行AJAX调用,然后获取所有注释,然后在相应的div中更新它。
- 醇>
上面的方法可以将参数传递给javascript方法的setInterval。有关此方法,请参阅here
答案 1 :(得分:0)
在页面中插入以下js,不要将其插入常见的js。
<script>
window.setInterval(function(){
addremarkClick();
}, 600000);// run this after every minute
</script>