2010-10-22 68 views
0

我昨天開始使用ascx,並開始將我的「動態」default.aspx頁面切割成更小的部分。將jquery事件從aspx傳遞到ascx

在我的default.aspx中,我有很多處理不同事件的JavaScript/jQuery代碼。當我從.aspx中刪除一些html代碼,同時將javascript保留在default.aspx中,並將其放入.ascx中時,jquery事件停止工作,是否必須編寫一些特殊的東西,以便我的JavaScript可以訪問我的usercontrol中的html?

感謝 中號

回答

0

考慮從東西像控制1至ctl00stuff_Control1該元素的ID的變化,當你把他們在用戶控件

+0

是的,那裏也是:)我在某些情況下通過使用類而不是id來解決這個問題。 – 2010-10-22 14:17:27

+0

你似乎是正確的一切改爲:filter1_嗯,吸太:) – Mikael 2010-10-22 15:50:27

+0

如果您使用jquery髒修復將使用$(「[id $ = lala]」)而不是$(「#lala」)在您的選擇器 – bevacqua 2010-10-22 16:00:51

0

客戶端的JavaScript有沒有ASCX的知識。在發送到瀏覽器之前,ascx包含在頁面中,因此瀏覽器僅將其視爲單個頁面。

JavaScript更可能停止工作,因爲它無法找到具有特定ID或類的元素。這可能是由於多種原因發生的,例如元素實際上丟失或者.net已經動態地改變了ID。

+0

所有的ID似乎是相同的:/ – Mikael 2010-10-22 15:48:27

+1

所以ID的被動態地改變? ;-) – 2010-10-24 20:19:39

0

我有包含用戶控件的頁面也包含其他用戶控件。 我有這個結構與事件和頁面渲染堆棧相同的問題。爲了解決這個問題,我將用戶控件特定的事件管理放在一個單獨的.js文件(如mycontrol.js)中,並在.ascx文件中引用該.js文件(將鏈接放在該文件中)。

我也有一種情況,我沒有用戶控件呈現,直到放置在標記(一個子控件)內,因此事件不能放在那個點上。我這樣處理,通過加載用戶控制JavaScript我的JavaScript中這樣的:

用戶控件和用戶控件內鏈接
/* function to allow inclusion of other files 
Included this way to allow addition AFTER the page renders the control - that is, fake inclusion in this file 
*/ 
function includeJS(jsPath) 
{ 
    var script = document.createElement("script"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("src", jsPath); 
    document.getElementsByTagName("head")[0].appendChild(script); 
}; 
includeJS('Js/secondusercontrol.js'); 
  • 單獨的腳本代碼
  • 使用腳本,如果延遲是一個問題
  • 包含.js文件
  • 把所有 「基地​​」 腳本和全局對象(如果需要)的頁面.js文件內
  • 使用.live()和.delegate()

編輯:我可以爲你工作的另一個選項我最初忘記了使用.live()和/或.delegate()功能。