2009-05-28 13 views
7

jestem w stanie wyzwalania kliknięcie znacznika body, używając jQuery, używam to ...wyzwalacz ciała kliknij z jQuery

$('body').click(); 

nawet to się nie powiedzie

$('body').trigger('click'); 

Jakieś pomysły? !

+0

Czy możliwe jest, że wywołujesz zdarzenie kliknięcia, zanim zdefiniujesz funkcję łapania kliknięć? pokaż nam kod, w którym obsługujesz kliknięcie. – duckyflip

+0

Nie chcę wychowywać czegoś starego, ale domyślam się, że domyślna wysokość ciała dokumentu nie jest taka sama jak wysokość rzutni. Tak więc za pomocą css, aby ustawić wysokość na 100% to naprawi, np. 'html, body {width: 100%; wysokość: 100%; } ' –

Odpowiedz

9

Powinieneś mieć coś takiego:

$('body').click(function() { 
    // do something here 
}); 

Funkcja zwrotna zostanie wywołana, gdy użytkownik kliknie gdzieś na stronie internetowej. Można wywołać zwrotnego programowo z:

$('body').trigger('click'); 
+0

Już zrobiłem to, co wspomniałeś .. Kiedy osobiście klikam w dowolnym miejscu na stronie, kliknij Handler działa idealnie – ruturaj

+0

czy myślisz, że próbujesz _fire_ wydarzenia? zamiast wypalania zdarzenia, dlaczego nie wywołać funkcji obsługi kliknięcia? –

+1

Tak Próbuję wystrzelić to wydarzenie, chcę symulować kliknięcie na ciele. – ruturaj

4

Użyłem następujący kod kilka razy i działa słodko:

$("body").click(function(e){ 
    //you can then check what has been clicked 
    var target = $(e.target); 
    if (target.is("#popup")) { } 
}); // Added); this for correct syntax 
10

ciekawie .. kiedy zastąpił

$("body").trigger("click") 

z

jQuery("body").trigger("click") 

ZADZIAŁAŁO!!!

+14

, co oznacza dla mnie, że używasz innych frameworków JavaScript na stronie, które również mają skróconą funkcję $(). –

+0

lub inna wersja JQuery w powiązanym skrypcie. Mam go, gdy używam JQGrid podczas odwoływania się do .each() – KevinDeus

2

jeśli wszystko mówiło nie działa, wrócić do podstaw i badania, czy to działa:

<html> 
    <head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    </head> 
    <body> 
    <script type="text/javascript"> 
     $('body').click(function() { 
     // do something here like: 
     alert('hey! The body click is working!!!') 
     }); 
    </script> 
    </body> 
</html> 

wtedy powiedzieć, czy jego działania, czy nie.

+0

hmmm ... po prostu zapamiętaj odpowiedź na własne pytanie X). w każdym razie możesz zrobić alert ($. toString()); aby wskazać, co to jest inna "wtyczka", która zakłóca działanie jQuery. – Seeker

0

Jak wspomniał Seeker, problem mógł być spowodowany zbyt szybkim skonfigurowaniem funkcji click(). Z fragmentu kodu nie wiemy, gdzie umieściłeś skrypt i czy uruchamia się we właściwym czasie.

Ważne jest, aby uruchamiać takie skrypty po przygotowaniu dokumentu. Odbywa się to poprzez umieszczenie inicjalizacji click() ramach tej drugiej funkcji, jak w:

jQuery(document).ready(function() 
    { 
    jQuery("body").click(function() 
     { 
     // ... your click code here ... 
     }); 
    }); 

Zazwyczaj jest to najlepsza metoda, zwłaszcza jeśli zawierają kodu JavaScript w tagu <head>. Jeśli umieścisz go na samym dole strony, funkcja ready() jest mniej ważna, ale nadal może być przydatna.