[英]Modifying the onclick event with jQuery
我有一個javascript片段,在我的頁面上顯示一個小部件。 有一些鏈接可以通過腳本輸出,如下所示:
<a href="#" onclick="somefunction()">Link</a>
這些鏈接導致一些JS觸發。 那很棒。 問題是href="#"
並且沒有"return false;"
在onclick
屬性的末尾。
當我單擊其中一個鏈接時,瀏覽器會跳轉到文檔的頂部。 將小部件放置在靠近文檔底部的位置,這並不好。
不幸的是,我無法控制腳本的輸出。
使用jQuery我可以使用$("#wxheader ul li a")
引用這些鏈接。 我嘗試了以下代碼,但它不起作用:
$(document).ready(function(){
$("#wxheader ul li a").each(function(){
var onclick = $(this).attr("onclick") + "; return false;";
$(this).attr("onclick", onclick );
});
});
我想寫一個jQuery函數,它將改變每個onclick屬性以追加"return false;"
並且必須在腳本將內容輸出到頁面后運行。
有任何想法嗎?
試試這個。 訣竅是在處理程序中調用preventDefault
,這可以防止默認元素操作傳播。 我希望這有幫助。
$("#wxheader ul li a").click(function(e){
e.preventDefault();
return false;
});
你應該能夠在jquery中覆蓋它,試試這個:
$("#wxheader ul li a").each(function(){
$(this).click(function(e) {
e.preventDefault();
});
});
這將停止click事件的正常進程。
修復了,這將有效地停止瀏覽器對click事件的默認解釋
你嘗試過使用href="javascript:"
嗎?
你也可以使用:
<a href="javascript:void(0)" onclick="somefunction()">Link</a>
我會這樣做的
$( '#wxheader ul li a' ).each( function( i, element )
{
// Capture the existing callback function
var originalCallback = element.onclick;
// Now, remove it from the elemnet
element.onclick = null;
// And replace it with our own, which calls the orignal
// with the proper context, and prevents the default
// event action
$(element).click( function( event )
{
event.preventDefault();
originalCallback.call( window );
});
});
查看jQuery中的preventDefault對象。
http://api.jquery.com/event.preventDefault/
這將允許它最初不運行或者在jQuery單擊處理程序中添加返回false。 preventDefault可能在Firefox中不起作用。 我不完全確定。
$("#wxheader ul li a").click(function(){
//do stuff//
return false;
});
這是一個測試頁面,我在一個鏈接上使用一些ajax功能來試圖覆蓋常規點擊。 這就是我正在談論它的功能,如果你正在尋找它。
http://testing.kobbyappiah.com/Design_and_Evolve/ajaxTest.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.