使用 Javascript 在运行时禁用<一个 href>
Disable <a href> in runtime using Javascript
Using Bootstrap
<ul class="nav nav-pills nav-stacked col-sm-2 hidden" id="menu">
<li role="presentation" id="LiNewsFeed"><a href="javascript:GetNewsFeed();">News Feed</a></li>
<li role="presentation" id="LiStatusUpdate"><a href="javascript:StatusUpdate();">Update Status</a></li>
<li role="presentation" id="LiWriteWall"><a href="javascript:WriteOnWall();">Post On Wall</a></li>
<li role="presentation" id="LiNotifications"><a href="javascript:GetNotifications();">Notifications</a></li>
<li role="presentation" id="LiLogOut"><a href="javascript:LogOut();">Logout</a></li>
</ul>
在Javascript中,我禁用了一些<li>
,如下所示:
$('#LiNewsFeed').addClass('disabled');
列表中的项目实际上看起来已禁用,当我单击它时,它实际上调用了javascript函数,因此,我需要的是禁用<a href>
而不仅仅是<li>
我尝试在$(document).ready
后添加这个:
$(".nav li.disabled a").click(function () {
return false;
});
但它并没有真正做任何事情。
我需要的是在我的 Js 代码中禁用<li>
后直接禁用<a href>
,而不是依赖点击事件......
似乎没有办法禁用<a href>
,所以我需要一种方法来解决它
任何帮助将不胜感激。
使用以下
代码。 检查工作示例 JSFIDDLE
$(".nav li.disabled a").each(function(){
$(this).attr('href','javascript:void(0);');
});
当您在 javascript(运行时)中禁用LI
时,您应该使用 .on
在禁用的链接上绑定事件:
$(".nav").on('click', 'li.disabled a', function () {
return false;
});
我会检查每个链接单击是否为父级禁用了类。
$('.nav li a').click(function () {
if($(this).parent('li').hasClass('disabled')) {
return false;
}
return true;
});
编辑,根据OP的更多信息,我会提出以下建议:
$('.nav li a').each(function() {
var $this = $(this);
// store reference of 'href' attr in case link is re-enabled
$this.data('href', $this.attr('href'));
if ($this.parent('li').hasClass('disabled')) {
// remove href attribute disabling click
$this.removeAttr('href');
} else {
// restore href
$this.attr('href', this.data('href'));
}
});
此代码应在添加/删除 li 元素上的禁用类后运行。
编辑 2 - 与其从<a>
链接的 href 调用函数,不如执行以下操作:
var events = {
'#LiNewsFeed': 'GetNewsFeed',
'#LiStatusUpdate': 'StatusUpdate'
'#LiWriteWall': 'WriteOnWall',
'#LiNotifications': 'GetNotifications',
'#LiLogOut': 'LogOut'
};
for (var selector in events) {
if (events.hasOwnProperty(selector)) {
try {
$(selector).click(function () {
// assuming function is global
if (typeof window[events[selector]] === 'function') {
// call function
window[events[selector]]();
}
// this is needed if the a element still has a href attr
return false;
});
} catch (e) {
console.log('Invalid Selector');
}
}
}
这样你可以控制函数的调用,并检查是否应该在不改变元素的情况下调用它,也许会坚持一个
if (!$(this).parent('li').hasClass('disabled')) {
...
}
围绕函数调用。
你能将 a 转换为跨度吗?
(代码未测试)
$(".nav li.disabled a").replaceWith(function() { return "<span>" + this.innerHTML + "</span>"; });
相关文章:
- 如何制作href链接和<李>在一个包装中
- CSS 在悬停时使图像变暗 - 在其周围添加一个 href
- 使用 Javascript 在运行时禁用<一个 href>
- 使用php使用href链接将输入的文本框值传递到另一个页面
- 在href跳转到另一个html元素之前,执行Knockout.js数据绑定:点击函数
- 为什么jQuery attr('href','#')设置了一个空值而不是#
- 使用onclick创建一个可点击的链接,但不使用href=#
- 将href链接到另一个HTML文档中的锚点并将其居中
- 如何从一个 HREF 填充多个输入字段
- Javascript 将一个 onclick 事件附加到所有带有 href 变量的链接
- href:链接回上一个页面上的某个类
- 如何执行一个包含更多 HREF 地址的链接属性
- 将现有单选按钮更改为 <一个 href>
- 使用 jQuery 添加一个指向
- 项的 href 链接
- 在 href 单击时返回另一个函数的响应
- 打开一个没有JavaScript或href的新窗口
- Javascript 在最后一个斜杠 / 之后替换 href 的某些字符
- 将 href 值从 标记链接到另一个 html 页面
- 使用 location.href 或类似内容打开一个 URL,后跟一个哈希符号
- 为什么 HREF 属性的值与前一个属性相加