2010-12-19 139 views
4

我想將本機JavaScript事件對象轉換爲jQuery事件對象。將本機js事件對象轉換爲jQuery事件對象

其實這就是問題所在: 我已通過jQuery綁定事件處理程序文件keyup事件,並有與一個keyup事件處理程序,通過內嵌的JavaScript綁定的頁面上的一些文本框。

問題是當文本框的事件處理程序被觸發時,文檔的事件處理程序也被觸發,因爲事件「冒泡」我可以修改由內聯JavaScript綁定的事件處理程序函數,但不是該行本身。

我在找的是一個跨瀏覽器,一種取消事件冒泡的方式,這就是爲什麼我想將它轉換爲一個jQuery對象。

回答

6

如果你想要做的就是防止事件冒泡,那麼沒有jQuery就很容易。不要害怕跳出jQuery的世界。它不像有些人會讓你相信那麼複雜。

function stopEventPropagation(evt) { 
    if (typeof evt.stopPropagation != "undefined") { 
     evt.stopPropagation(); 
    } else { 
     evt.cancelBubble = true; 
    } 
} 

// Example 
document.getElementById("yourInputId").onkeyup = function(evt) { 
    evt = evt || window.event; 
    stopEventPropagation(evt); 
}; 
+0

得到它thankx :) – Shaheer 2010-12-23 11:35:52

+0

我想有人不喜歡的建議,你可以做JavaScript沒有jQuery。 – 2013-04-23 23:10:04

+0

我沒有看到任何downvotes – Shaheer 2013-04-24 08:34:18

0

可以的onclick刪除或任何內嵌事件處理程序頁面加載如後立即使用jQuery屬性:

$(document).ready(function() { 

    $('#someInput').removeAttr('onclick'); 

}); 

再附上你的事件處理程序行爲進行自定義。

+0

我將如何獲得傳遞給它的參數有兩個總數? – Shaheer 2010-12-19 11:25:03

8

展望的jQuery的代碼(我看了一下1.7,但我認爲它是可用之前爲好),很容易利用本地事件創建一個jQuery事件:

var jQueryEvent = jQuery.Event(event); 
+2

這並沒有爲我工作,但jQuery.event.fix(事件)幫助。請參閱http://stackoverflow.com/questions/9508377/how-to-create-a-jquery-event-object-out-of-a-native-browser-event-object – 2013-12-16 10:02:56