如何禁用所有链接'使用jQuery默认点击行为?

时间:2016-01-20 13:50:36

标签: javascript jquery html

编辑:原始错误是拼写错误。我会重写它,以便它对社区有用。

如何从链接 禁用所有与某个班级相关的链接(例如&#34; .disabled&#34;)将处理程序添加到每个< / strong>元素?

这种方法的优点在于它可以与这个类的每个链接(或元素)一起使用,无论它们是否在网页的生命周期中被添加或者改变了它们的类。

如果解决方案停止&#34;点击&#34;可以接受(对于此用例)冒泡的事件。

删除href属性是不可接受的(对于此用例),它可能是&#34; 未禁用&#34;后面。

7 个答案:

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

&#13;
&#13;
<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;
&#13;
&#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);');
    }
});

示例

&#13;
&#13;
$('.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: ' &nbsp; - 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;
&#13;
&#13;