2008-10-02 15 views
15

Podczas implementacji mojego pierwszego znaczącego skryptu przy użyciu jquery, musiałem znaleźć konkretny web-control na stronie. Ponieważ pracuję z DotNetNuke, nie ma gwarancji, że kontrolka będzie miała identyfikator klienta, ponieważ kontrola kontenera może się zmieniać z miejsca na miejsce. Skończyło się na użyciu selektora atrybutu, który szuka identyfikatora, który kończy się identyfikatorem serwera kontrolki.Jaka jest najlepsza metoda znajdowania formantu ASP.Net za pomocą jQuery?

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

Wygląda na to, że nie jest to najlepsza metoda. Czy jest inny sposób na zrobienie tego?


@Roosteronacid - Choć jestem coraz formantów chcę, staram się postępować zgodnie z idiomów dla danej technologii/języku. Kiedy programuję w C#, staram się zrobić to w sposób, który najlepiej wykorzystuje funkcje C#. Ponieważ jest to mój pierwszy wysiłek, aby naprawdę używać jQuery, a ponieważ będzie to wykorzystywane przez 10-tych tysięcy użytkowników, chcę się upewnić, że tworzę kod, który jest również dobrym przykładem dla innych.

@forhool - to by zdecydowanie działało, ale niestety muszę zachować javascript w oddzielnych plikach dla celów wydajności. Nie można naprawdę skorzystać z buforowania bardzo dobrze, jeśli wstawisz javascript, ponieważ każda "strona" jest dynamicznie generowana. Skończyłbym wysyłanie tego samego javascript do klienta w kółko tylko dlatego, że zmieniły się inne treści na stronie.


@Roosteronacid - Choć jestem coraz formantów chcę, staram się postępować zgodnie z idiomów dla danej technologii/języku. Kiedy programuję w C#, staram się zrobić to w sposób, który najlepiej wykorzystuje funkcje C#. Ponieważ jest to mój pierwszy wysiłek, aby naprawdę używać jQuery, a ponieważ będzie to wykorzystywane przez 10-tych tysięcy użytkowników, chcę się upewnić, że tworzę kod, który jest również dobrym przykładem dla innych.

@forhool - to by zdecydowanie działało, ale niestety muszę zachować javascript w oddzielnych plikach dla celów wydajności. Nie można naprawdę skorzystać z buforowania bardzo dobrze, jeśli wstawisz javascript, ponieważ każda "strona" jest dynamicznie generowana. Skończyłbym wysyłanie tego samego javascript do klienta w kółko tylko dlatego, że zmieniły się inne treści na stronie.

+0

+1 # 1 Google dla „listy kontroli jquery” – jrcs3

Odpowiedz

2

Użyj klasy znaczników na formancie i wybierz ją za pomocą jQuery.

+0

Chociaż to działa, jeśli jesteś zwolennikiem właściwej semantyki (używając klas jako klas, a nie identyfikatorów), to nie jest idealne. Również wybór według nazwy klasy jest DUŻO wolniejszy niż wybór przez ID. –

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

Spowoduje to dynamiczne wstawienie identyfikatora DOM kontrolki. Oczywiście oznacza to, że Twój JS musi znajdować się w pliku ASPX, a nie w zewnętrznym pliku JS.

+0

To świetnie, jeśli potrzebujesz jeszcze bardziej niepotrzebnego tekstu na stronie i jeszcze bardziej nieprzyjemnego czytania. – ppumkin

2

Poza tym, że jest nieco droższy i bardziej wydajny, nie widzę niczego złego w korzystaniu z tego selektora. Po wszystkim; otrzymujesz kontrolki, do których chcesz uzyskać dostęp.

3

Jedną rzeczą, którą zrobiłem w przeszłości (w JavaScript nie jQuery), w powyższym moim importowaniu JavaScriptów, wyprowadza się identyfikatory dynamicznych kontrolek podobne do tego, co poleca toohool i przypisuję je do zmiennych, które odwołuję się do importu mojego skryptu .

Coś takiego powinno pozwalają wykorzystać buforowanie i nadal pozwalają mieć dokładnie identyfikatory klient:

<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> 
Powiązane problemy