2010-01-13 9 views
14

Mam prostą symulację kliknięcia łącza, którą chcę wykonać za pomocą jQuery. Z tego, co przeczytałem, powinno to zadziałać, ale poniższy kod nie działa. Nic się nie dzieje, jeśli robię to samo, co część innego wydarzenia lub coś takiego. Myśli?kliknięcie jquery nie działa w hiperłączu

<script type="text/javascript"> 
    $(function() { 
    $("#lnk_0").click(); 
    }); 
</script> 

<a id="lnk_0" href="http://mydomain.com/mypage.html">link</a> 

Odpowiedz

23

Zobacz click():

Wyzwala zdarzenie click każdego dopasowanego elementu.

Powoduje, że wszystkie funkcje, które zostały , zostały powiązane z tym zdarzeniem kliknięcia, aby zostały wykonane .

Ważną rzeczą jest, aby pamiętać, że to robi nie duplikat klikając link. Wywołuje tylko powiązane zdarzenia. Jeśli chcesz zmienić lokalizację:

var link = $("#link_0"); 
link.click(); 
window.location.href = link.attr("href"); 

ale nawet to jest tylko przybliżeniem, ponieważ nie uwzględnia ładowarki zatrzymania propagacji zdarzenia.

+1

Ok, dzięki za wyjaśnienie tego. Właściwie to spędziłem trochę czasu, wpatrując się w tę dokładną dokumentację. Myślę, że nawigacja do nowej lokalizacji kwalifikuje się jako "powiązane wydarzenie". Zgaduję, technicznie, że nie jest? :/ Zaakceptuję tę odpowiedź, ale pomocne będzie również wprowadzenie wartości SLAKS poniżej. Niech to stanie się jako odpowiedź na programistów raz na zawsze! $ ("# my_hyperlink"). click() nie spowoduje, że przeglądarka będzie nawigować! – Sean

7

Wywołanie metody jQuery za pomocą click spowoduje wywołanie wszystkich dodanych procedur obsługi click, ale nie kliknie linku.

Musisz napisać:

window.location = $("#lnk_0").attr('href'); 

(ta zakłada, że ​​nie ma żadnych koparki click zdarzeń)


EDIT: W odpowiedzi na Twój komentarz, można nazwać IE- tylko metoda DOM click, taka jak:

if ($("#lnk_0")[0].click) 
    $("#lnk_0")[0].click(); 
else 
    window.location = $("#lnk_0").attr('href'); 
+0

SLaks, dzięki za twoje rozwiązanie. Jedynym problemem jest naprawdę irytujący efekt uboczny polegający na utracie nagłówka adresu URL odnośnika w IE, co staram się zapobiec. – Sean

-1

Nie jestem pewien, czy rozwiązuje twój p Problem recise, ale tutaj jest to fragment kodu używam do symulacji użytkownika kliknij:

var target = "..."; 

var e = jQuery.Event("click"); 

target.trigger(e); 

if (!e.isDefaultPrevented() && target.attr("href")) 
    window.location.href = target.attr('href'); 
4

aby umożliwić funkcjonalność hiperłącza (Umieszczenie, kursor ręki, etc), gdy przesłanianie z jQuery można wykonać następujące czynności:

<script> 
    $(function() { 
     $("#dialog-modal").dialog({ 
      autoOpen: false, 
      height: 320, 
      modal: true 
     }); 

     $("#open-modal").click(function() { 
      $("#dialog-modal").dialog("open"); 
     });   
</script> 
<a href="javascript:return true" id="open-modal">Open Modal</a> 

<div id="dialog-modal" title="Hello World"> 
Hello 
</div>