jQuery zapewnia mi teraz zabawne wprowadzenie do Javascript po 12 latach bezowocnego życia. Jestem na etapie, na którym staram się nauczyć jak najwięcej o optymalizacji kodu, który piszę i chociaż znalazłem dużo dobrego materiału referencyjnego, jest coś podstawowego, co mnie zastanawia i nie byłem w stanie aby znaleźć cokolwiek na ten temat w dowolnym miejscu.
Kiedy przywiązuję coś do elementu, jak powinienem odnosić się do tego elementu w funkcji. Na przykład, gdy dołączasz funkcję do elementu za kliknięcie imprezy:
$('#a_button',$('#a_list_of_buttons')).click(function() {
// NOW WHAT'S THE BEST WAY TO REFER TO '#a_button' ?
});
nie wiem zachować re-wybierając go jak tak przeglądarka musi przeszukać cały DOM ponownie od zera, aby znaleźć to, co już stwierdzono raz :
$('#a_button').click(function() {
// I KNOW THAT THIS IS NAUGHTY
var buttonValue = $('#a_button').val();
$('#a_button').addClass('button_has_been_clicked');
});
Obecnie używam jednego z następujących ale nie jestem do końca pewien, co każdy z nich jest rzeczywiście robi:
$('#a_button').click(function() {
// USING this
var buttonValue = $(this).val();
$(this).addClass('button_has_been_clicked');
});
ale jest to po prostu ponownie wybierając jak w jodeł t "niegrzeczny" przykład?
Wygląda na to, że może być lepiej, ale czy można wielokrotnie odwoływać się do "event.target"?
$('#a_button').click(function(event) {
// USING A LOCAL VARIABLE
var thisButton = $(this);
// OR SHOULD THAT BE
var thisButton = $(event.target);
var buttonValue = thisButton.val();
thisButton.addClass('button_has_been_clicked');
});
Rozumiem wydajności wydajności przechodząc do rzeczy zmiennych, ale jestem pewien, czy w takich sytuacjach za pomocą $ (this) lub $ (event.target) dostarcza mi już i tak przez te same wydajności ustawianie nowej zmiennej Robię więcej pracy, której potrzebuję.
Dziękuję.
Opcja 'target' własność obiektów zdarzeń jest znormalizowana w jQuery i będzie działać tak samo we wszystkich przeglądarkach że to wspiera. To nie zawsze jest takie samo jak "to". –
@GenericTypeTea - twoja metoda wygrywająca jest tym, co widziałem w prawie wszystkich materiałach referencyjnych, które przeczytałem, ale nie - gdzie wyjaśniono, dlaczego użyli tej metody, poza tym używając odpowiednika $ ('# a_button ") należy unikać, ponieważ wymaga świeżego wyszukiwania DOM, gdy jest używany. –
@Tim - zaktualizowano odpowiedź. Dzięki. – GenericTypeTea