2017-09-12 33 views
1

我有这样的代码:禁用href和执行功能

<a href="link.cshtml"> 
    <div>...</div> 
    <div class="function">...</div> 
    <div>....</div> 
</a> 

我想与类函数div禁止href和调用一个函数,当我点击这个div。

我试过onclick="return false; testFunction();"但显然它不起作用。

有人可以帮助我吗?

在此先感谢

+2

当然它不_that_为了工作...什么都没有之后__返回语句得到执行。 – CBroe

+1

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener – Teemu

+0

使用'event.preventDefault();'内部testfunction()来防止超链接的默认操作点击 – Niladri

回答

2
  1. 您应该使用preventDefault以确保浏览器将无法运行默认href
  2. 如果return - 没事后,将运行...

function testFunction() { 
 
    alert('hi'); 
 
} 
 
document.querySelector('.function').addEventListener('click', function() { 
 
    event.preventDefault(); 
 
    testFunction(); 
 
});
<a href="https://www.yahoo.com"> 
 
    <div>...</div> 
 
    <div class="function">Click here will not change page</div> 
 
    <div>....</div> 
 
</a>

0

另一种方法,使之与javascript:void(0),并通过jQuery

$(".function").click(function(){ 
 
console.log("test") 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="javascript:void(0)"> 
 
    <div>...</div> 
 
    <div class="function">Click here will not change page</div> 
 
    <div>....</div> 
 
</a>
单击事件

0
$('#selector').on('click', function(e) { 
    e.preventDefault(); 
    alert("Cool!"); 
}); 
+1

请解释你的码。 – bfontaine

0

,你可以这样做:

$('#content a').click(function(){ return false }); 

从Click事件处理程序返回false阻止默认行为(链接如下)。

如果你可以有一个以上的链接,但要禁用只有这一个,你可能在你的选择更具体:

$('#content a[href="/test/"]').click(function(){ return false });