0

將javascript事件綁定到我的自定義MVC控件的最佳方式是什麼?我最初的想法是使用Html Helpers創建控件,這些控件爲它們提供了一個表示它們是什麼樣的控件的css類。然後,在document.ready上,我將使用jQuery通過它們的類名選擇所有這些控件並綁定它們的事件。將javascript事件綁定到MVC控件

不過,我很擔心按類名選擇整個dom的速度。我已經閱讀過(並且經歷過)這個速度有多慢,特別是在我們需要針對這個項目的IE8中。

我可以通過爲每個頁面創建一個js文件來選擇ID,但我寧願不這樣做,因爲它是一個複雜的網頁應用程序,有很多頁面。如果視圖至少包含一種類型的控件,我寧願爲每種類型的控件包含一個js文件。

css類是我的最佳選擇嗎?任何其他想法?我正在使用MVC3。

回答

2

我的建議是嘗試與類和測試性能。如果您不滿意,請切換到ID。我始終使用類選擇器,並且在任何瀏覽器中都沒有發現它們非常慢。當你給jQuery一個上下文來搜索時,事情就會很快。例如:

$('#controls .control').whatever(); 

或者

$('.control', '#controls').whatever(); 

嘶嘶聲已經在優化這些東西要快大。

編輯:這裏是jQuery的性能提示,一般一個很好的參考(注#5): http://net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/

+0

謝謝,但我無法通過上下文菜單中選擇作爲控制可以在頁面上的任何地方。只是要清楚,我不能夠選擇「每頁」,它必須是一個通用的方法,可以在Web應用程序中使用。看我的編輯。 –

+0

@JoshNoe我不明白爲什麼你不能通過ID選擇而不爲每個頁面創建一個js文件。僅僅是因爲你不想包含不在頁面上的控件的代碼?如果是這樣,那麼當你聲稱如果視圖至少包含一種類型的控件時,你寧願爲包含在視圖中的每個控件擁有一個js文件,那麼聽起來就像你在正確的軌道上。你不能這樣做,並通過ID選擇? – lbstr

+0

我的js文件如何知道要選擇的ID?例如,假設我在兩頁上有一個控制類型「CustomDropDown」。其中一個頁面的ID爲「companies」的CustomDropDown,另一個頁面的Id爲「racecars」。這兩個頁面都將使用相同的「CustomDropDown.js」文件,該文件不具有這些ID的任何知識。 –