如果用户未登录,请停止链接

时间:2014-07-05 13:42:38

标签: javascript jquery

你能帮帮我吗?这个似乎很简单,但我的解决方案都不起作用。

我在页面上有一个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");
    }

});

有人知道这段代码有什么问题吗?或者你知道更好的解决方案吗?

提前谢谢

2 个答案:

答案 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>

DEMO