我在页面上有一个pdf链接表。我希望用户只能在他登录时打开它们,否则会弹出一条警告消息。
如果我们认为每个链接都在如下所示的div中:
<div class="prdc prdc-prodList noAccess">
<a target="_blank" href="/files/test.pdf">Specification</a>
</div>
如果用户未登录,则将“noAccess”类分配给链接父级,否则为其分配“hasAccess”。
我有这个代码,但是(如果用户已注销)它始终不起作用。
$( ".prdc a" ).click(function(e) {
if ( $( this ).parent().hasClass( "noAccess" ) ) {
e.preventDefault();
alert("You should be logged in to have access");
}
});
有人知道这段代码有什么问题吗?或者你知道更好的解决方案吗?
提前谢谢
答案 0 :(得分:1)
首先 - 这不是一个很好的方法。 这是因为一些知道如何处理开发人员工具的用户可能只是删除noAccess类并访问您的文件。因此你应该: 1.如果用户未登录,则根本不显示链接。 2.在服务器端添加额外检查以获取登录用户的状态,并在用户未登录时阻止下载。
回答你的问题:
这可能是由于parent()
功能的使用所致。它只能获得一个对象的直接父级,而你想要的是closest('.noAccess')
。此函数将查看具有类noAcess
的给定对象的所有前置函数。
希望这有帮助,欢呼!
答案 1 :(得分:0)
首先不要将href
放在a
中,然后当用户使用javascript add href
时,请执行此操作。以下代码说明了这一点:
<div class="prdc prdc-prodList noAccess">
<a target="_blank" id="link">Specification</a></div>
<强>的javascript 强>
var some_function_name = function(){
if( some conditions if the user has loged in or not ){
var a = document.getElementById("link");
a.setAttriblue("href","/files/test.pdf");
}
}
用户插入你的html之后会看起来像这样:
<div class="prdc prdc-prodList noAccess">
<a target="_blank" id="link" href="/files/test.pdf">Specification</a></div>