2008-12-05 15 views
24

Próbuję kliknąć łącze przy użyciu jquery. Wydaje się, że zdarza się tylko zdarzenie click, które powiela "onclick" (tzn. Dane wejściowe użytkownika). Czy można użyć jquery do kliknięcia łącza?Czy istnieje metoda kliknięcia jQuery?

+3

Czy chcesz programowo emulować kliknięcie łącza? – kgiannakakis

Odpowiedz

35

Od odpowiedź:

$("a[0]") 

nie jest poprawnym selektor. aby uzyskać najpierw na wykorzystaniu strony:

$("a:first") 

lub

$("a").eq(0). 

Więc dla selektora w swojej odpowiedzi:

$("table[1]/tr[1]/td[1]/a").trigger('click'); 

zapisu

$("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').click(); 

Uwaga jak to kliknie wszystkie linki w drugim tabl e komórka drugiego wiersza tabeli w drugiej tabeli na twojej stronie.
Jeśli używasz tej metody, aby przekierować stronę href części A następującym sposobem jest nieco ładniejszy:

document.location = $("table").eq(1).children("tr").eq(1).children('td').eq(1).children('a').attr('href'); 

Uwaga jak to będzie ustawić lokalizację dokumentu do href pierwszego znalezionego na sekundę komórka tabeli drugiego wiersza tabeli znalezionego w drugiej tabeli na stronie.
Jeśli chcesz dopasować pierwsze elementy, użyj eq (0) zamiast eq (1).

EDIT
Jeśli naprawdę chcesz to zrobić 1337-haxxor

$("table:eq(1) > tr:eq(1) > td:eq(1) > a").click(); 

jednak myślę, że druga metoda jest bardziej readible.

EDIT

Ok, z następnym odpowiedź/pytanie thingie
Jak o nie właściwie klikając na link, ale po prostu ustawienie ciąg document.location do niego:

document.location = $("table").eq(0).children("tr").eq(0).children('td').eq(0).children('a').eq(0).attr('href'); 
+4

Dzięki Pim. Próbowałem replikować zachowanie użytkownika, ale jest to dobre obejście problemu. Wielkie dzięki. – jedd

+0

Jeśli jest to odpowiedź, której zamierzasz użyć, powinieneś ją zaakceptować. –

+1

Zmiana "document.location" ma tylko jedną wadę: łamie przycisk powrotu ... – BlaM

4

$ (- jakiś obiekt -). Trigger ("kliknij") powinien załatwić sprawę.

+0

Przykładowa dokumentacja i kod jest tutaj http://docs.jquery.com/Events/trigger –

+0

Działa, ale równie dobrze możesz zrobić tylko $ (object) .click() –

8

Wolę $(-some object-).click() dla czytelności

jeśli przejdą metodę click() funkcji, zachowuje się jak zdarzenie onClick Oprawa:.

czyli $ (- jakiś przedmiot -) kliknij (function() {-do stuff-})

0

Wypróbuj go w ten sposób:

$("table:first").find("tr:first").find("td:first").find("a:first").click(); 

To spowoduje wyzwolenie zdarzenia onclick najpierw w pierwszej komórce pierwszego rzędu w pierwszym stole ... i jest bardzo czytelny sam w sobie.

+0

Nie chcę wywoływać zdarzenia onclick !!!!! Chcę programowo kliknąć obiekt !!! Równoważnik Javascript: window.document.getElementsByTagName ("table") [0] .rows [0] .cells [1] .children [0] .click(); – jedd

+0

"programowo kliknij na obiekt" co to znaczy, jeśli nie wyzwoli zdarzenie onclick z pobranego elementu? chcesz przypisać funkcję onclick, lub? –

2
$("table:first").find("tr:first").find("td:first").find("a:first")[0].click(); 

Będzie to działać w Internet Explorerze, jeśli jest to twój jedyny cel, w przeciwnym razie utknąłeś w rozwiązaniu document.location.

4

ten działa skutecznie:

$(document).ready(function() { 
     $("#horizontalSlideButton").trigger('click'); 
    }); 

Gdzie horizontalSlideButton jest identyfikator połączenia, który chcesz wywołać zdarzenie click dla.

Jak tylko DOM jest załadowany, zawartość $ (document) .ready (function() {} są ładowane.

Proszę zaznaczyć, czy to pomaga!

+0

yes ..work like a charm :) –

3

miałem podobny problem i Stwierdziliśmy, że przez tworzenie fałszywych obiekt zdarzenia, a następnie wysyłając go za pomocą dispatchEvent() powielane przez użytkownika kliknięcie bardzo ładnie.

var event = document.createEvent("HTMLEvents"); 
event.initEvent("click", true, true); 
document.getElementById('myID').dispatchEvent(event); 

Oczywiście nie jest to przy użyciu jQuery, ale może pomóc w zadaniu

0

wolę używać funkcji podglądu na żywo, takich jak (dla klasy)

$(document).ready(function() { 
    $(".myclass").live('click', function(){//do something}); 

}); 

lub id

$(document).ready(function() { 
    $("#myid").live('click', function(){//do something}); 

}); 

używam do span class projektować mój link i nadać mu klasę lub identyfikator lubię

<span class="link"><a href="javascript:void(0);" target="_new">my link/a></span> 
Powiązane problemy