Большинство предложений здесь будет работать, но результаты испытаний на коде jQuery показывают, что чистые идентификационные селекторы являются безусловно самыми быстрыми. Тот я чаще всего использую:
$("[id$=origControlId]")
является довольно медленным, но проблема не слишком очевидна, если страница не имеет много средств управления и много jQuery.
С тех пор это довольно безболезненный для присвоения нескольких классов управлению, Вы могли дать каждому CSSClass, который соответствует идентификатору. Так как они затем были бы уникальны (необходимо будет следить за средствами управления типом повторителя, которые генерируют несколько средств управления), Вы могли выбрать классом.
, Например:
<asp:Label ID="Label1" CssClass="Label1 SomeOtherClass" runat="server" Text="test">
</asp:Label>
мог быть выбран исключительно:
$(".Label1")
, Который является почти с такой скоростью, как идентификационный выбор.
я никогда не рассматривал этого:
$('#<%= Label1.ClientID %>')
, но я собираюсь попробовать его!
OUT
) не является хорошей идеей, поскольку они глобальны для всей вашей программы - вы должны быть уверены, что никакая другая процедура, включая те, в модулях используют то же имя (в том числе в будущем). my $ f; open $ f, "> $ some_filename";
подвержен ошибке, когда $ some_filename
, содержащее начальную >
, изменит поведение программы. Использование трех- Форма аргументов позволяет избежать этого, разделяя режим и имя файла на отдельные аргументы, где они не могут вмешиваться.
Более того, использование формы множества аргументов с конвейерами - очень хорошая идея:
Решение № 2:
OUT
- это глобальный дескриптор файла, использование которого подвергает вас коварным ошибкам, подобным этой:
sub doSomething {
my ($input) = @_;
# let's compare $input to something we read from another file
open(F, "<", $anotherFile);
@F = <F>;
close F;
&do_some_comparison($input, @F);
}
open(F, "<", $myfile);
while (<F>) {
&doSomething($_); # do'h -- just closed the F filehandle
}
close F;
Один аспект, который следует иметь в виду, это что форма с двумя аргументами нарушена. Рассмотрим файл с именем «abc» (то есть имя файла с пробелом в начале). Вы не можете открыть файл:
open my $foo, ' abc' or die $!;
open my $foo, '< abc' or die $!;
open my $foo, '< abc' or die $!;
# nothing works
Место сбрасывается, и файл больше не может быть найден. Такой сценарий маловероятен, но определенно является проблемой. Форма с тремя аргументами невосприимчива к этому:
open my $foo, '<', ' abc' or die $!;
# works
Эта ветка от perlmonks является таким же хорошим обсуждением, как и любая другая проблема. Просто имейте в виду, что в 2001 году форма с тремя аргументами все еще считалась новой и, следовательно, не подходила для переносимого кода, поскольку программы Perl умирали с синтаксической ошибкой при запуске в интерпретаторе 5.005. Это уже не так: