繁体   English   中英

如何禁用jQuery并立即使用(out)jQuery调用onclick?

[英]How to dissable href and call onclick at once with(out) jquery?

我找到了这个问题的一些答案,但没有一个对我有用。
我想要的是调用函数myFunc()而不刷新href要的页面。
这个href正在执行GET请求,如果有人有脚本块,我希望它保持原状。 它也必须在没有脚本的情况下工作。
但是,当有人没有禁用脚本时,我不想走到href重定向的地方,而是在onclick上执行myFunc()

我试过这样的事情:
在JavaScript:

function onClickFunc(somedata){
  event.preventDefault();
  myFunc(somedata);
}

在html上:

<a onclick="javascript:onClickFunc({{ some_django_data.id }})" href="?current={{ some_django_data.id }}{% if other_django_data %}&page={{ other_django_data.number }}{% endif %}">

当我用#替换href主体并将javascript:myFunc({{ some_django_data.id }})放在onclick内时,它将起作用。
有点遗憾,因为具有脚本块的人会失去使用我的网站的可能性。
该解决方案有什么问题?

两件事情:

  1. onXyz属性样式的处理程序包含JavaScript代码 ,因此不需要javascript:伪协议。

  2. 由于您正在编写函数调用的代码,因此,如果要访问事件对象,则需要将其传递给函数

所以:

onclick="onClickFunc(event, {{ some_django_data.id }})"

然后

function onClickFunc(event, somedata) {
    event.preventDefault(); // Stops the default behavior of following the link
    // ...
}

如果您需要支持真正的旧版浏览器(或像真正的旧版浏览器一样跳动起来并表现为浏览器的浏览器,[我正在看着您,IE9-IE11]),则需要考虑使preventDefault不存在于浏览器中的可能性。事件对象。 好消息是,在onXyz属性处理程序中return false阻止默认操作。 所以:

因此(注意return

onclick="return onClickFunc(event, {{ some_django_data.id }})"

(也请注意这里的return

function onClickFunc(event, somedata) {
    if (event.preventDefault) {
        event.preventDefault(); // Stops the default behavior of following the link
    }
    // ...

    return false;
}

您的代码在正确的轨道上,但是您忘记了将事件对象传递给javascript函数。

查看此工作示例:

 function myfunc(event, data) { event.preventDefault(); alert("HELLO"); return false; } 
 <a onclick="myfunc(event, 'foo')" href="www.google.com">TESTER</a> 

注意:您实际上不需要指定JS协议。 看看这个SO帖子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM