如果用户未登录,则停止链接
stop a link if user isn't logged in
你能帮我吗?这个问题似乎很简单,但我的解决方案都不起作用。
我在一个页面上有一个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");
}
});
有人知道这段代码有什么问题吗?或者你知道更好的解决方法吗?
提前感谢
首先,这不是一个好方法。这是因为一些知道如何处理开发人员工具的用户可能只是删除noAccess类并访问您的文件。因此,您应该:1. 如果用户未登录,则根本不显示链接。2. 在服务器端增加对登录用户状态的额外检查,并在用户未登录时阻止下载。
和回答你的问题:
这可能是由于使用了parent()
函数造成的。它只得到一个对象的直接父对象,你想要的是closest('.noAccess')
。这个函数将查找所有具有noAcess
类的给定对象的前身。
希望这有帮助,干杯!
通过首先不把href
在a
,然后当用户登录然后使用javascript添加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>
演示相关文章:
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- Facebook共享链接适用于用户,但不适用于粉丝页面管理员
- 使用用户输入修改链接
- 如何防止用户使用javascript或jquery在链接中单击鼠标中键
- 将链接保存到用户'的PC
- reactJs redux:如何对用户事件调度操作并将操作与化简器和存储链接
- 如何区分用户单击链接和在 UIWebView 中执行自动重定向的页面
- 用户单击带有哈希值的链接以访问该页面,如果禁用Javascript会发生什么情况
- 如何在 Angular 中将锚标记与模态链接,以便用户登录
- 如何在用户提交链接时添加提取推文并将其发布到站点的功能
- 下一个/上一个锚链接,如何在用户滚动时更新下一个/上一个链接
- 如何将链接状态设置为在用户访问另一个页面之前保持
- 是否可以超链接嵌入的视频框,这样当用户点击视频时,就会显示超链接
- 当用户单击时,在新选项卡中打开链接
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 更新用户's使用PHP或JavaScript链接
- 如何检测用户点击了内部或外部链接
- NodeJS+JS:根据当前用户选择生成动态链接
- 根据用户从jQuery UI可选下拉框中选择的内容创建链接
- Meteor发布中通过id链接用户