2008-10-02 98 views
15

在使用jQuery實現我的第一個重要腳本時,我需要在頁面上找到特定的Web控件。由於我使用DotNetNuke,因爲容器控件可能會在不同站點間發生變化,所以不能保證控件ClientID。我最終使用了一個屬性選擇器來查找以控件的服務器ID結尾的ID。什麼是使用jQuery查找ASP.Net控件的最佳方法?

$("select[id$='cboPanes']") 

這似乎可能不是最好的方法。有沒有另一種方法來做到這一點?


@Roosteronacid - 當我得到我想要的控件時,我試着按照給定技術/語言的習慣用法。當我用C#編程時,我嘗試以最好地利用C#特性的方式實現它。由於這是我第一次真正使用jQuery,並且由於這將被成千上萬的用戶使用,我想確保我正在創建代碼,這也是其他人的一個很好的例子。

@toohool - 這肯定會工作,但不幸的是我需要保持JavaScript在單獨的文件出於性能原因。如果您內嵌javascript,因爲您無法真正利用緩存,因爲每個「頁面」都是動態生成的。我最終會一次又一次地向客戶端發送相同的JavaScript,因爲頁面上的其他內容發生了變化。


@Roosteronacid - 當我得到我想要的控件時,我試着按照給定技術/語言的習慣用法。當我用C#編程時,我嘗試以最好地利用C#特性的方式實現它。由於這是我第一次真正使用jQuery,並且由於這將被成千上萬的用戶使用,我想確保我正在創建代碼,這也是其他人的一個很好的例子。

@toohool - 這肯定會工作,但不幸的是我需要保持JavaScript在單獨的文件出於性能原因。如果您內嵌javascript,因爲您無法真正利用緩存,因爲每個「頁面」都是動態生成的。我最終會一次又一次地向客戶端發送相同的JavaScript,因爲頁面上的其他內容發生了變化。

+0

+1#1谷歌爲「jQuery的列表控件」 – jrcs3 2009-04-17 20:31:52

回答

2

在控件上使用標記類,並通過jQuery進行選擇。

+0

雖然這個作品,如果你是正確的語義的堅持者(使用類作爲類而不是標識符),這並不理想。另外,按類名選擇比按ID選擇要慢。 – 2008-10-03 03:40:46

8
$("#<%= cboPanes.ClientID %>") 

這將動態注入控件的DOM ID。當然,這意味着您的JS必須位於ASPX文件中,而不是位於外部JS文件中。

+0

是的,這很棒,如果你需要更多不必要的文字在網頁上,更不舒服的閱讀體驗。 – ppumkin 2014-07-16 15:08:28

2

除了更貴一點,性能方面,我看不出使用該選擇器的任何錯誤。畢竟;你正在獲得你想要訪問的控件。

3

在上面我的JavaScript導入中,我已經完成了一件事(在JavaScript中不是jQuery),輸出動態控件ID類似於我們推薦的動態控件ID,並將它們分配給我在腳本導入中引用的變量。

這樣的事情,應該讓你利用緩存,仍然讓你有確切的客戶端ID:

<head> 
    <script type="text/javascript> 
     var cboPanesID = <%= cboPanes.ClientID %>; 
    </script> 

    <!-- this JS import references cboPanesID variable declared above --> 
    <script src="jquery.plugin.js"></script> 
</head> 
相關問題