• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrócenie kodu jq

Object Storage Arubacloud
0 głosów
317 wizyt
pytanie zadane 21 listopada 2018 w JavaScript przez qwerty7 Nowicjusz (120 p.)

Witam

Nie znam się na jquery. Mam taki kod:

jQuery(document).ready(function( $ ){
  
    
    jQuery('#test1')
    .on('pumBeforeOpen', function () {
        var $iframe = jQuery('iframe', jQuery(this)),
            src = $iframe.prop('src');
        $iframe.prop('src', '').prop('src', src + '?autoplay=1');
    });
  
 
jQuery('#test2')
    .on('pumBeforeOpen', function () {
        var $iframe = jQuery('iframe', jQuery(this)),
            src = $iframe.prop('src');
        $iframe.prop('src', '').prop('src', src + '?autoplay=1');
    });

jQuery('#test3')
    .on('pumBeforeOpen', function () {
        var $iframe = jQuery('iframe', jQuery(this)),
            src = $iframe.prop('src');
        $iframe.prop('src', '').prop('src', src + '?autoplay=1');
    });

});

Jak go skrócić, żeby nie powtarzać za każdym razem wszystkiego podając inne id.

Jest to kod do wtyczki wordpress, który dodaje automatyczne włączenie filmiku po kliknięciu w ikonę, film wyświetla się w lightboxie. Nie mogę dodać bezpośrednio autoplay do adresu z youtube, bo wtedy film włącza się po załadowaniu strony przed kliknięciem (słychać dźwięk, sam film jest nadal schowany).

1 odpowiedź

0 głosów
odpowiedź 21 listopada 2018 przez arces Pasjonat (17,700 p.)

Spróbuj w ten sposób:

jQuery(document).ready(function ($) {
  jQuery('[id^="test]').on('pumBeforeOpen', function () {
    var $iframe = jQuery('iframe', jQuery(this)),
            src = $iframe.prop('src');
    $iframe.prop('src', '').prop('src', src + '?autoplay=1');
  });
});

P.S.

Po co jako argument funkcji przekazujesz "$", jeżeli nigdzie go nie używasz?

komentarz 21 listopada 2018 przez Tomek Sochacki Ekspert (227,510 p.)
jQuery('[id^="test]')

mocno bym tutaj dyskutowal czy jest to faktycznie szybsze i lepsze rozwiązanie... Takie selektory są dość wolne i moim zdaniem już lepsze jest rozwiązanie np. dodaniem dla tych elementów jakiegoś atrybutu czy klasy i dodaniu event listenera dla rodzica, z analizą, który z dzieci został kliknięty.

komentarz 21 listopada 2018 przez arces Pasjonat (17,700 p.)
Prośba była o skrócenie kodu, a nie optymalizację ;) Na pewno da się to w lepszy sposób wykonać.
komentarz 21 listopada 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Prośba była o skrócenie kodu, a nie optymalizację

I w pracy też masz takie podejście w CR :( ?

Skrócenie kodu to nie wszystko i to tylko jedna ze składowych wpływających na ogólną wydajność aplikacji. I tak kod zanim trafi na proda jest minifikowany, więc te kilka linijek więcej nie robi wielkiej różnicy, jeśli całkowity build miałby się zwiększyć nieznacznie, ale kosztem szybszej pracy to lepiej zostać czasami przy tym większym. Czasami warto szukać rozwiązań gdzie indziej, np. w buildach cząstkowych, w jakiś rozwiązaniach reaktywnych itp. itd.

1
komentarz 21 listopada 2018 przez niezalogowany

Tomek Sochacki imo takie mikro-optymalizacje kompletnie nie mają znaczenia. Szczególnie dodawanie event delegation dla 3 elementów, jeśli mamy jQuery.

komentarz 21 listopada 2018 przez arces Pasjonat (17,700 p.)

@Tomek Sochacki, ile zyskasz na optymalizacji Twoim sposobem? Nie sądzę, żeby w obrębie całej strony miało to jakieś duże znaczenie. Tym bardziej, że strona jest na WP, który sam w sobie jest dosyć "ciężki".

1
komentarz 21 listopada 2018 przez pablop76 VIP (123,180 p.)

@arces,

Zgubiłeś cudzysłów , a poza tym jeżeli pobierasz kolekcję to chyba musisz ją przepuścić przez jakąś pętlę np. each() I dopiero na każdym elemencie $(this) wykonać jakieś działanie.

2
komentarz 21 listopada 2018 przez Tomek Sochacki Ekspert (227,510 p.)
I tak i nie. Myśląc tylko i wyłącznie tym jednym ficzerem to owszem, macie rację. Ale moim zdaniem warto myśleć kompleksowo, dzisiaj robimy jeden ficzer, jutro drugi, i za chwilę okaże się, że w miesiąc wypuszczamy na proda 30 nowych wersji jakieś usługi... Jak weźmiemy pod uwagę skalę np. roku to już można wg mnie faktycznie myśleć co nie co o takich mikrooptymalizacjach.

To jest błąd, który jest zauważalny u wielu osób początkujących... patrzenie wyłącznie na swój feature, na swoją drobną zmianę... i właśnie takie argumentacje jak ktoś w CR wytknie kwestię optymalizacji...

Argento piszesz o niepotrzebnym omijaniu jQuery skoro i tak jest... oki, racja, ale czy nie warto może sprawdzić czy naprawdę to jQuery jest niezbędne i czy nie lepiej powoli zacząć wychodzić z niego aby zmniejszyć całkowity build itp.? Myśląc ponownie tylko swoją, obecną zmianą to takie coś nigdy nie nastąpi, ale jeśli stopniowo będziemy wychodzić z jQuery to z czasem okaże się, że starych ficzerów jest garstka i może warto naprawdę to zaorać i zyskać ładnych parę kb?

To jest zawsze oczywiście sprawa indywidualna, ale ja jestem zdania, aby jednak starać się zawsze myśleć bardziej przyszłościowo i otwierać sobie drogę do przyszłych migracji technologii itp.
komentarz 21 listopada 2018 przez niezalogowany

I tak i nie. Myśląc tylko i wyłącznie tym jednym ficzerem to owszem, macie rację. Ale moim zdaniem warto myśleć kompleksowo, dzisiaj robimy jeden ficzer, jutro drugi, i za chwilę okaże się, że w miesiąc wypuszczamy na proda 30 nowych wersji jakieś usługi... Jak weźmiemy pod uwagę skalę np. roku to już można wg mnie faktycznie myśleć co nie co o takich mikrooptymalizacjach

Milionowe części sekundy pomnożone nawet przez setki przypadków - nadal nie zmieniają ux i naprawdę daleko im do tego.

To jest błąd, który jest zauważalny u wielu osób początkujących... patrzenie wyłącznie na swój feature, na swoją drobną zmianę... i właśnie takie argumentacje jak ktoś w CR wytknie kwestię optymalizacji...

To nie jest optymalizacja, optymalizacja to by była gdyby zaoszczędzono 300ms. To jest niepotrzebne czepialstwo i pisanie nadmiernych ilości kodu.

Argento piszesz o niepotrzebnym omijaniu <<< wstaw dowolny framework /bibliotekę >>> skoro i tak jest... oki, racja, ale czy nie warto może sprawdzić czy naprawdę to <<< wstaw dowolny framework /bibliotekę >>> jest niezbędne i czy nie lepiej powoli zacząć wychodzić z niego aby zmniejszyć całkowity build itp.? Myśląc ponownie tylko swoją, obecną zmianą to takie coś nigdy nie nastąpi, ale jeśli stopniowo będziemy wychodzić z <<< wstaw dowolny framework /bibliotekę >>> to z czasem okaże się, że starych ficzerów jest garstka i może warto naprawdę to zaorać i zyskać ładnych parę kb?

Narzędzia są po to, żeby z nich korzystać. Inna sprawa, że w tym konkretnym przypadku jQuery raczej nigdzie się nie wybiera.

Podobne pytania

0 głosów
0 odpowiedzi 176 wizyt
pytanie zadane 6 listopada 2016 w JavaScript przez blackvten Nowicjusz (180 p.)
0 głosów
3 odpowiedzi 159 wizyt
pytanie zadane 5 kwietnia 2016 w JavaScript przez tarnasm Gaduła (3,030 p.)
0 głosów
2 odpowiedzi 141 wizyt
pytanie zadane 25 lipca 2020 w JavaScript przez kuba1245677 Obywatel (1,080 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...