簡體   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