如何从链接 禁用所有与某个班级相关的链接(例如&#34; .disabled&#34;)将处理程序添加到每个< / strong>元素?
这种方法的优点在于它可以与这个类的每个链接(或元素)一起使用,无论它们是否在网页的生命周期中被添加或者改变了它们的类。
如果解决方案停止&#34;点击&#34;可以接受(对于此用例)冒泡的事件。
删除href属性是不可接受的(对于此用例),它可能是&#34; 未禁用&#34;后面。
答案 0 :(得分:1)
您必须将事件附加到每个元素(这样做):
$(".disabled").click(function(e){
e.stopPropagation();
e.preventDefault();
});
答案 1 :(得分:1)
将以下课程应用于所有元素:
.not-active{
pointer-events: none;
cursor: not-allowed;
}
$('a').addClass('not-active');
答案 2 :(得分:1)
<div class="body">
<a href="javascript:alert('Click');">Enabled</a>
<a href="javascript:alert('Click');" class="disabled">Disabled</a>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(".body").on('click','a',function(e){
if ($(this).is('.disabled')) {
e.preventDefault();
e.stopPropagation();
alert("Click disabled");
}
});
</script>
&#13;
这适合我。
答案 3 :(得分:1)
DEMO 调试并列出所有委派事件。
您可以在容器上使用jQuery的.on()
方法,而且您不会有大量的点击事件。
<强> HTML: - 强>
<div id="container"> // #container has the event handler assigned
<a>content</a>
<a href="http://asdasd.com" class="disabled">Disabled</a>
<a href="http://asdasd.com">Not disabled</a>
<a>content</a>
</div>
<强>的jQuery 强>
// Whenever <a> elements that descend from #container get
// clicked the click event handler will fire.
$('#container').on( 'click','.disabled', function(e) {
e.preventDefault();
e.stopPropagation();
return false;
});
答案 4 :(得分:1)
您可以通过此代码
禁用链接网址上的重定向<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<a href="http://google.com">google</a>
<br />
<a href="http://facebook.com">Facebook</a>
</body>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
jQuery('body').click(function () {return false;});
</script>
</html>
答案 5 :(得分:0)
<div id="container"> // #container has the event handler assigned
<a>content</a>
<a href="http://www.google.com" class="disabled">Disabled</a>
<a href="http://www.google.com">Not disabled</a>
<a>content</a>
</div>
$(document).ready(function(){
$('#container').on( 'click','.disabled', function(e) {
e.preventDefault();
e.stopPropagation();
return false;
});
});
答案 6 :(得分:-1)
只需用空参考替换href链接:
$('.disabled').each(function(i) {
if ($(this).attr('href')) $(this).attr('href', 'javascript:void(0);');
});
作为后续措施,如果您仍然需要实际链接,您可以将它们保存到对象的数据中,然后更改它们!
$('.disabled').each(function(i) {
var href = $(this).attr('href');
if (href) {
$(this).data('href', href)
.attr('href', 'javascript:void(0);');
}
});
示例强>
$('.disabled').each(function(i) {
var href = $(this).attr('href');
if (href) {
$(this).data('href', href)
.attr('href', 'javascript:void(0);');
}
});
setTimeout(function() {
$('.disabled').each(function(i) {
var href = $(this).attr('href');
if (href) {
var href = $(this).data('href');
console.log(href)
$(this).after($('<i />', { html: ' - My old Link was: <b>' + href + '<b />' }).fadeIn());
}
});
}, 3000);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="bob.com" class="disabled">bob</a><br />
<p class="disabled">ron</p><br />
<a href="jane.com" class="disabled">jane</a><br />
<h3 class="disabled">sally</h3><br />
<a href="trump.com" class="disabled">trump</a><br />
&#13;