2011-09-06 71 views
2

我有一個類名爲'窗體'的div。當頁面最初加載時,這個div是隱藏的(這是一個asp.net web窗體Panel控件)。當單擊搜索按鈕打開頁面上的搜索表單時,將顯示該面板。我需要捕獲用戶點擊時輸入的任何文本框,並讓它點擊搜索按鈕,我添加了一個名爲「form-default」的類。如何做一個jQuery查找隱藏的內部元素

我遇到的問題是我的事件處理程序沒有連接起來,因爲當頁面最初被加載時,'窗體'不可見,所以無法訪問我的文本框。我可以讓它們在表單打開時附加,但我試圖獲得一個可以加載到全局文件中的小代碼片段,以便我們可以很容易地將'form'的類名稱分配給div和'default-form' div中的按鈕在頁面中的多個位置具有默認按鈕。我不希望開發人員需要記住在UI更改時掛接呼叫。我可以使用live()來掛鉤嗎?還是我在做其他事情?

$(".form").find(".ec-text").keydown(function(e){ 
if (e.which == $.ui.keyCode.ENTER){ 
this.closest(".form-default").click(); 
} 
}); 

編輯:這工作得很好:

$(".ec-text").live("keydown", function(e){ 
    if (e.which == $.ui.keyCode.ENTER){ 
     this.closest(".form-default").click(); 
    } 
}); 

,但我需要附加的事件處理程序的項目只有一個.FORM DIV中。應用此:

$(".form").find(".ec-text").live("keydown", function(e){ 
     if (e.which == $.ui.keyCode.ENTER){ 
      this.closest(".form-default").click(); 
     } 
    }); 

不起作用。有任何想法嗎?

+0

我覺得這個鏈接可以幫助: http://stackoverflow.com/questions/679958/在jQuery中如何選擇一個隱藏元素 – indrap

+0

這可能不會有幫助,因爲控件沒有隱藏在html/css的意義上。當Visible屬性設置爲false時,它甚至不會由服務器端代碼在DOM中創建。 –

+0

表單實際上是否有一個稱爲表單的類,或者它只是您嘗試選擇的表單元素?如果是這樣,在.form中省略點,它應該工作。此外,您不需要執行$('。form')。find('。ec-text')。 $('。form .ec-text')會很好。 – VNO

回答

2

最簡單的事情是改變你的生活綁定代碼,使其只綁定到那些在表單內的物品。 (你的代碼沒有工作,因爲.find那種休息的居住處理程序的工作方式。)

$(".form .ec-text").live("keydown", function(e){ 
    if (e.which == $.ui.keyCode.ENTER){ 
     this.closest(".form-default").click(); 
    } 
});