Как имитировать щелчок по якорной ссылке

Я пытаюсь вызвать щелчок по ссылке для .jquery. Кто-нибудь знает, почему следующее не работает.

<!DOCTYPE  HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html lang="en"> 
  <head> 
    <title>test</title>
  </head>
  <body> 
    <div>
       <a id="google_link" href="http://google.com" target="_blank">click to go to google</a>
    </div>
    <div id="google_link_proxy">click here to do the same as the link above</div>

    <script type="text/javascript">      
     $("#google_link_proxy").click(function(event){
         $("#google_link").click();
     });
    </script>
  </body>
</html>

person RayLoveless    schedule 02.12.2010    source источник
comment
.observe() и .fireEvent()? Хм? Где вы изучали jQuery? Я бы посоветовал эту книгу. документация jQuery API также отлично подходит для справки.   -  person BalusC    schedule 02.12.2010
comment
Вы не должны редактировать свой вопрос, чтобы изменить его первоначальное значение.   -  person jonathancardoso    schedule 08.09.2011
comment
Почему в этом мире вы добавляете ответы на свой вопрос? Так мы не сможем понять, в чем была ваша проблема и какой ответ вам помог!   -  person Afzaal Ahmad Zeeshan    schedule 25.08.2013
comment
@Afzaal, на вопрос нет ответа.   -  person RayLoveless    schedule 27.08.2013
comment
Ты уже отметил один вопрос как ответ, брат. Посмотрите на первый ответ. Тот, что отмечен!   -  person Afzaal Ahmad Zeeshan    schedule 27.08.2013


Ответы (6)


Похоже, ваш селектор $("google_link_proxy") выключен. Попробуйте $("#google_link_proxy").

Вам также необходимо закрыть вызов наблюдения с помощью }).

Это синтаксические ошибки в приведенном выше коде, хотя я не думаю, что эти функции предусмотрены в jQuery по умолчанию.

Вот что, я думаю, вам нужно:

$("#google_link_proxy").click(function(event){
    window.open($("#google_link").attr('href'),'_blank')
});
person Jeff the Bear    schedule 02.12.2010
comment
это то, что я в итоге использовал. я не знаю, почему $(#...).click() не работал. Спасибо - person RayLoveless; 03.12.2010
comment
Привет, ты случайно не знаешь, правильно ли это поддерживается во всех браузерах? - person mirosval; 21.09.2011
comment
Да, я считаю, что он поддерживается во всех браузерах. - person Jeff the Bear; 21.09.2011
comment
Существует лучший способ. Просто сделайте $('#google_link')[0].click(); - person Roman Starkov; 13.02.2014

Метод jQuery полностью игнорирует href:

$('#google_link').click(); // ignores href!

Собственный метод DOM работает правильно:

$('#google_link')[0].click();

Это работает независимо от того, является ли href URL-адресом, фрагментом (например, #blah) или даже javascript:.

person Roman Starkov    schedule 13.02.2014
comment
Да! Или, если вам больше нравится этот синтаксис, используйте метод jQuery .get(): $('#google_link').get(0).click(); - person Markus Amalthea Magnuson; 27.05.2015
comment
Это определенно должен быть принятый ответ вместе с комментарием @MarkusAmaltheaMagnuson. Спасибо, парни. - person Yannick Mauray; 01.09.2017

Если вы используете jQuery и собственный DOM, якорь можно щелкнуть

// insert an <a> into document and click it **natively**
// (.get(0) returns the DOM element)
$('<a id="fred99" />').attr('href', '#david').attr('target', '_blank')
.text('LINK').appendTo('body').get(0).click();

// now we've clicked, tidy up
$('#fred99').remove();
person Wandering Zombie    schedule 15.11.2012
comment
IMO, это верное решение, так как при нажатии на существующую ссылку, для которой вы обновили значение href через javascript, URL-адрес не открывается. Кроме того, это не будет заблокировано блокировщиком всплывающих окон, поскольку оно не использует window.open. Это решение работает отлично, спасибо! - person Victor P; 24.11.2012

Убедитесь, что ваш код jQuery заключен в блок ready, как показано ниже.

$(document).ready(function(){/* your code here */});

Это гарантирует запуск сценариев после загрузки всего содержимого и изображений.

person pixelbobby    schedule 02.12.2010

Используйте click()

$("#google_link_proxy").click(
    function(){
        $("#google_link").click();
    }
);

fireEvent и наблюдать не являются частью API jQuery

person epascarello    schedule 02.12.2010
comment
.observe() также не является частью jQuery API. - person BalusC; 02.12.2010
comment
Отредактировал его, чтобы иметь лучший пример. К вашему сведению: блокировщики всплывающих окон могут заблокировать это. - person epascarello; 02.12.2010
comment
Не используйте $('#google_link').click();. Используйте $('#google_link')[0].click();, который использует метод щелчка, предоставляемый DOM, вместо метода jQuery. - person Roman Starkov; 13.02.2014

Это можно сделать без jQuery:

document.querySelector('#google_link').click()
person Vasfed    schedule 25.01.2019