如何在onclick方法中防止默认事件处理?

时间:2011-08-14 11:59:00

标签: javascript

如何防止onclick方法中的默认值?我有一个方法,我也传递自定义值

<a href="#" onclick="callmymethod(24)">Call</a>
function callmymethod(myVal){
    //doing custom things with myVal
    //here I want to prevent default
}

11 个答案:

答案 0 :(得分:80)

让你的回调返回false并将其传递给onclick处理程序:

<a href="#" onclick="return callmymethod(24)">Call</a>

function callmymethod(myVal){
    //doing custom things with myVal
    //here I want to prevent default
    return false;
}

要创建可维护的代码,您应该避免使用“内联Javascript”(即:直接在元素标记内的代码)并通过以下方式修改元素的行为包含的Javascript源文件(称为unobtrusive Javascript)。

加价:

<a href="#" id="myAnchor">Call</a>

代码(单独的文件):

// Code example using Prototype JS API
$('myAnchor').observe('click', function(event) {
    Event.stop(event); // suppress default click behavior, cancel the event
    /* your onclick code goes here */
});

答案 1 :(得分:35)

尝试

<a href="#" onclick="callmymethod(24); return false;">Call</a>

答案 2 :(得分:32)

在我看来,答案是错误的!当你简单地回归假时,他要求event.preventDefault();;它也会调用event.preventDefault();event.stopPropagation();

你可以解决这个问题:

<a href="#" onclick="callmymethod(event, 24)">Call</a>
function callmymethod(e, myVal){
    //doing custom things with myVal

    //here I want to prevent default
    e = e || window.event;
    e.preventDefault();
}

答案 3 :(得分:10)

您可以捕获事件,然后使用preventDefault()阻止它 - 使用纯Javascript

document.getElementById("xyz").addEventListener('click', function(event){
    event.preventDefault();
    console.log(this.getAttribute("href"));
    /* Do some other things*/
});

答案 4 :(得分:8)

只需放置“javascript:void(0)”,代替href标签中的“#”

<a href="javascript:void(0);" onclick="callmymethod(24)">Call</a>

答案 5 :(得分:8)

这对我有用

<a href="javascript:;" onclick="callmymethod(24); return false;">Call</a>

答案 6 :(得分:1)

您可以使用:

event.stopPropagation();

https://dom.spec.whatwg.org/#dom-event-stoppropagation

答案 7 :(得分:0)

将所有html页面的功能用法更改为return false太麻烦了。

因此,这是一个仅对功能本身进行修补的经过测试的解决方案:

function callmymethod(myVal) {
    // doing custom things with myVal

    // cancel default event action
    var event = window.event || callmymethod.caller.arguments[0];
    event.preventDefault ? event.preventDefault() : (event.returnValue = false);

    return false;
}    

这正确地阻止了onclick事件处理程序完成后IE6,IE11和最新的Chrome浏览器访问href="#"

积分:

答案 8 :(得分:0)

如果需要将其放入标签中。不是最好的解决方案,但它会起作用。

确保将onclick事件放在href前面。这样才对我有用。

<a onclick="return false;" href="//www.google.de">Google</a>

答案 9 :(得分:0)

另一种方法是使用属性event中的onclick对象(无需在函数中添加其他参数来传递事件)

function callmymethod(myVal){
    console.log(myVal);
}
<a href="#link" onclick="event.preventDefault();callmymethod(24)">Call</a>

答案 10 :(得分:-2)

为元素提供类或id并使用jquery函数unbind();

$(".slide_prevent").click(function(){
                $(".slide_prevent").unbind();
              });