2015-05-26 9 views
5

Czy istnieje sposób sprawdzenia, czy funkcja działa w dokumencie gotowym?Czy istnieje sposób sprawdzenia, czy funkcja działa w gotowym dokumencie, czy nie?

mam na myśli coś takiego:

function myfunction() { 
    var isinside = //... what to write here? 
    if (isinside) { 
    } 
} 

(Możliwe jest również moim (bardzo początkujący) koncepcja nie jest optymalna, więc piszę co usiłuję osiągnąć:

chciałbym utworzyć obiekt wielokrotnego użytku, który można utworzyć w wielu wystąpieniach na stronie (mam nadzieję, że z jedną linią JavaScriptu na instancję), ale są rzeczy, które ten obiekt musi wykonać w przygotowanym dokumencie, np. dołączanie modułów obsługi zdarzeń.)

+1

Czy próbujesz ustalić, czy zdarzenie z gotowym dokumentem zostało uruchomione, czy nie? –

+0

Qantas: Dobra uwaga. Jeśli używam rozwiązania TrueBlueAussie, muszę sprawdzić, czy gotowy dokument został uruchomiony, czy nie. Jeśli tak, to nie mogę polegać na async jQuery .ready handler, zamiast tego muszę bezpośrednio wywołać mój kod init ... –

+0

W rzeczywistości nie trzeba sprawdzać, zobacz dokumentację jQuery: [.ready() ' ] (https://api.jquery.com/ready/) –

Odpowiedz

5

Jestem nie wiem, dlaczego masz problem tutaj? Kod wywołujący jest zazwyczaj odpowiedzialny za bycie w funkcji obsługi gotowej DOM, a nie za funkcje.

Ty może prostu umieścić DOM gotowy nadmiarowo wewnątrz dowolnej funkcji, jeśli to konieczne, ale to brzmi jak dziwny sytuacji więc trzeba pokazać resztę kodu.

np. Każda funkcja może mieć DOM gotowy Handler:

function myfunction() { 
    $(document).ready(function(){ 
     // I am inside DOM ready! 
     // Connect my DOM element events here 
    }); 
    // Do my other non-element stuff here 
} 

lub, krócej:

function myfunction() { 
    $(function(){ 
     // I am inside DOM ready! 
     // Connect my DOM element events here 
    }); 
    // Do my other non-element stuff here 
} 

Kluczem tutaj jest, że DOM gotowe koparki można nazwać po DOM gotowy i oni ogień natychmiast.

Wadą tego jest to, że nie można polegać na wartości zwracanej, ponieważ DOM gotowy jest potencjalnie asynchroniczny.

+0

Chce wiedzieć, czy jego funkcja została wywołana z kodu wewnątrz '$ (document) .ready()'. – Barmar

+4

@Barmar: Rozumiem, ale dlaczego miałby * warunkowo * dbać? :) –

+0

TrueBlueAussie: No cóż, problemem jest moja początkowa wiedza, co obecnie uniemożliwia mi twórcze wykorzystanie możliwości :-). Jednak twoje rozwiązanie rodzi nowe pytanie. Teraz muszę się dowiedzieć, czy gotowy dokument już się zwolnił, czy nie. Jeśli tak, to nie mogę polegać na asynchronicznej obsłudze jQuery .ready, muszę zamiast tego bezpośrednio wywołać mój kod init ... –

Powiązane problemy