2011-08-25 12 views
5

W jaki sposób można wywołać domyślną akcję/zdarzenie z łączem HTML (element zakotwiczenia)? Jest to użycie JavaScript/jQuery do "kliknięcia" istniejącego linku HTML, tak jakby użytkownik go kliknął.Jak wywołać domyślną akcję/zdarzenie z łączem HTML (element zakotwiczenia)?

Po prostu użycie .click() wydaje się nie działać.

$('#alink').click(); 
// the nothing happening 

W tym HTML:

<a id="alink" href="http://google.com" target="_blank">a link</a> 

Przykład skrzypce: http://jsfiddle.net/dCfD8/

wolę nie tworzyć nowe okno w JavaScript (i dbać o cokolwiek innego musi być obsługiwane gdy link jest kliknięty).

+1

Zobacz to: http://stackoverflow.com/questions/1694595/can-i-call-jquery -click-to-follow-an-a-link-if-i-havent-bound-an-event-handl –

+0

@Digital Plane, dziękuję, nie widziałem tego wcześniej. Mimo to interesujące byłoby wiedzieć, czy są jakieś zmiany w tej sprawie, lub odpowiedź "nie da się zrobić" nadal obowiązuje nawet w najnowszych przeglądarkach (np. Chrome 13+). – Qtax

Odpowiedz

2

można wywołać zdarzenie click przy użyciu prostego trigger metodę w jQuery.

$('#alink').trigger('click'); 

Należy jednak pamiętać, że nawet w przypadku wyrzucenia, przeglądarka nie będzie podążać za linkiem href. Jedynym sposobem na podążanie za hrefem jest kliknięcie myszką.

O ile mi wiadomo, nie ma sposobu, aby zmusić link do zachowania się tak, jakby był kliknięty. Musisz zmienić lokalizację dokumentu lub coś w tym rodzaju, aby rzeczywiście nawigować między stronami.

+0

Zaakceptowano dla "nie ma sposobu, aby zmusić link do zachowania się tak, jakby został kliknięty", który http://stackoverflow.com/questions/1694595/can-i-call-jquery-click-to-follow-an- Również -poczta-a-link-if-i-havent-bound-an-event-handle. – Qtax

-1

spróbuj tego:

$('#alink').trigger('click'); 
+0

Nie działa (przynajmniej w skrzypcach). – Qtax

+1

to wywołuje tylko zdarzenia jQuery związane z kliknięciem, jeśli chcesz "emulować" kliknięcie przez użytkownika zakotwiczenia w celu przekierowania do innego adresu URL, możesz to zrobić: 'document.location = $ ('# alink'). Attr ('href ");' –

+0

Nie działałby z 'target =" _ blank "' lub innymi atrybutami specjalnych linków. – Qtax

1

Rozszerzając komentarzu Fabio Cicerchia do własnego postu: Można użyć window.open:

var link = $('#alink'); 
var target = link.attr("target"); 
window.open(link.attr("href"), target ? target : "_self"); 
+0

+1. Wydaje się, że to może zadziałać. Ale obawiam się, że (domyślne) programy do obsługi wywołań/blokery mogą je zablokować, podczas gdy wpływają na zwykłego użytkownika klikając łącze. – Qtax

+0

Tak, w rzeczywistości większość wyskakujących okienek blokuje to, jeśli nie zostanie wywołane interakcją użytkownika. Możesz połączyć go z 'doument.location = ...' w przypadkach, gdy cel nie jest ustawiony. Może powinieneś wyjaśnić tło, dlaczego musisz to zrobić. Może w ten sposób można znaleźć alternatywy. – RoToRa

0
<script src='jquery lib source' ></script> 
    <script> 
    function force() 
    { ...do something...to fill page2 
     $('#gopage2').trigger('submit'); 
    }  
    </script> 
    <form action='#page2' id='gopage2'> 
    </form> 

    ... 
    <span name='#page2'>This is page2</span> 
+1

Należy rozważyć dodanie wyjaśnienia do odpowiedzi, a nie tylko kodu. Naszym celem jest kształcenie ludzi po to, aby rozumieli odpowiedź i mogli ją zastosować w innych sytuacjach. Jeśli skomentujesz swój kod i dodasz wyjaśnienie, sprawisz, że Twoja odpowiedź będzie bardziej pomocna nie tylko dla osoby, która zadała to pytanie w tym czasie, ale także dla każdego, kto może mieć ten sam problem. – starsplusplus

Powiązane problemy