因此,我一直在努力研究這一整天,並且無法弄清楚如何使其發揮作用。我有一張TD的表格,裏面充滿了使用JQuery「getJSON」命令從數據庫中繪製的內容。我有一個事件處理程序的設置,因此當你雙擊一個TD元素時,它的內容就成爲一個INPUT元素,其默認值是封閉TD的前一個內容。JQuery:查找創建DOM元素的對象
input元素被命名爲「輸入」像這樣一個Javascript對象內部創建:
var Input = function() {
var obj = this;
obj.docElement = $('<input/>').attr('type', 'text').val(obj.defaultValue);
}
所有這一切都被工作至今。我的問題是,我希望用戶能夠在INPUT被選中表示他們已經完成編輯該字段時按下RETURN鍵。我試過類似以下的東西:
$(obj.docElement).bind('keydown', function(e) {
if(e.which == 13) {
// do something
}
}
這適用於您第一次編輯字段;但是,如果您多次編輯一個字段,它將停止工作。此外,如果您隨機雙擊TD,最終會中斷。我測試了它,並確定INPUT元素停止註冊任何類型的事件,就好像「綁定」不再存在一樣。
我做了大量的搜索,並確定放置在INPUT元素上的常規JQuery「綁定」處理程序不可靠。因此,我決定將事件處理程序附加到文檔對象,而不是使用如下:
$(document).bind('keydown', function(e) {
// do something
}
我知道我可以使用「e.target」得到了動作上執行的目標元素(這適用於我,e.target正確地指向INPUT元素)。
我的問題是,如何獲得創建INPUT元素的對象?我需要能夠執行包含在用於創建INPUT元素的相應「輸入」類別 中的函數。我需要從「$(document).bind」函數中調用這些函數。所以基本上我需要能夠得到一個INPUT元素的父/創建者Input對象。
如果我沒有足夠清楚地解釋任何事情,請讓我知道。任何幫助在這個問題將不勝感激!我也願意提供其他方法的建議(除了使用「$(document).bind」)。
謝謝!
非常感謝!讀完你的答案後,我決定使用嵌套的for-in循環遍歷我的對象層次結構,並檢查每個Input對象的文檔元素是否與傳入的e.target元素對照。也許不是最有效的方式,但現在一切正常!再次感謝! – 2009-02-22 06:04:01