Próbuję wywołać zdarzenie kliknięcia hiperłącza za pomocą jQuery w sposób przedstawiony poniżej. Hiperłącze nie ma żadnego identyfikatora, ale ma klasę css
$(document).ready(function () { $('.cssbuttongo').trigger('click'); });
Powyższa funkcja nie działa. To jest hiperłącze
<a href="hyperlinkurl" class="cssbuttongo">hyperlink anchor</a>
Odpowiedzi:
Nie mam faktycznych dowodów, aby to udowodnić, ale już napotkałem ten problem. Wygląda na to, że wywołanie zdarzenia click () w
<a>
tagu nie działa w taki sam sposób, jakiego można by oczekiwać w przypadku, na przykład, przycisku wprowadzania.Rozwiązaniem, które zastosowałem, było ustawienie właściwości location.href w oknie, co powoduje, że przeglądarka ładuje zasób żądania w następujący sposób:
$(document).ready(function() { var href = $('.cssbuttongo').attr('href'); window.location.href = href; //causes the browser to refresh and load the requested url }); });
Edytować:
Zrobiłbym skrzypce js, ale natura pytania zmieszana z tym, jak jsfiddle używa iframe do renderowania kodu, sprawia, że nie idzie.
źródło
onclick
zdarzenie. Po prostu wykonaj,$('.cssbuttongo')[0].click()
aby poprawnie zasymulować kliknięcie w całości.Natywna metoda DOM działa właściwie:
$('.cssbuttongo')[0].click(); ^ Important!
Działa to niezależnie od tego, czy
href
jest to adres URL, fragment (np.#blah
) Czy nawetjavascript:
.Zauważ, że wywołuje to
click
metodę DOM zamiast metody jQueryclick
(która jest bardzo niekompletna i całkowicie ignorujehref
).źródło
$('.cssbuttongo').click(); // ignores href!
nie zagwarantuje, że zadziała. Ten drugi zawsze będzie działał, ponieważ użycie indeksu [0] spowoduje, że obiekt jQuery stanie się zwykłym obiektem JS, który jest dokładnie taki sam, jakiego używa przeglądarka. @Wei LiuOprócz świetnej odpowiedzi romkyns ... tutaj jest odpowiednia dokumentacja / przykłady.
Elementy DOM mają
.click()
metodę natywną .Odpowiednia dokumentacja W3 .
Kilka przykładów ...
Możesz uzyskać dostęp do określonego elementu DOM z obiektu jQuery: (przykład)
$('a')[0].click();
Możesz użyć tej
.get()
metody, aby pobrać element DOM z obiektu jQuery: (przykład)$('a').get(0).click();
Zgodnie z oczekiwaniami możesz wybrać element DOM i wywołać
.click()
metodę. (przykład)document.querySelector('a').click();
Warto zaznaczyć, że jQuery nie jest wymagane do wywołania
.click()
zdarzenia natywnego .źródło
Wywołanie kliknięcia przez JavaScript nie spowoduje otwarcia hiperłącza. Jest to środek bezpieczeństwa wbudowany w przeglądarkę.
Zobacz to pytanie, aby poznać niektóre obejścia.
źródło
[0]
to, że jest to ważne w twoich skrzypcachChcę tylko powiedzieć, że zaakceptowana odpowiedź nie zawsze działa.
Oto przykład, że się nie powiedzie.
gdyby
<href='/list'>
href = $('css_selector').attr('href') "/list" href = document.querySelector('css_selector').href "http://localhost/list"
lub możesz dołączyć do tego href z jQuery
href = document.URL +$('css_selector').attr('href');
lub sposób jQuery
href = $('css_selector').prop('href')
Na koniec wywołaj go, aby zmienić adres URL bieżącej strony przeglądarki
window.location.href = href
lub wyskocz za pomocą
window.open(url)
Oto przykład w JSFiddle.
źródło
$('css_selector')[0].click()
? To działa w tym JsFiddle ...$('.cssbuttongo').click();
że nie zadziała, ponieważ podaje tylko wartość href, zamiast adresu URL przeglądarka używa. Przepraszamy za mylące komentarze.[0].click()
działa, dlaczego w Twojej odpowiedzi o tym nie ma?location.href
akceptuje ścieżki względne, więc użycie/list
spowoduje automatyczne dołączenie bieżącej domeny. Więc to działa.Miałem podobny problem, jak kliknąć przycisk zamiast łącza. Nie udało się to w metodach .trigger ('click') lub [0] .click () i nie wiedziałem dlaczego. W końcu zadziałały dla mnie:
$('#elementid').mousedown();
źródło