[英]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
內時,它將起作用。
有點遺憾,因為具有腳本塊的人會失去使用我的網站的可能性。
該解決方案有什么問題?
兩件事情:
onXyz
屬性樣式的處理程序包含JavaScript代碼 ,因此不需要javascript:
偽協議。
由於您正在編寫函數調用的代碼,因此,如果要訪問事件對象,則需要將其傳遞給函數
所以:
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.