Динамически создавать и «кликать» ссылку с помощью jQuery - PullRequest
13 голосов
/ 28 июня 2011

Я хочу динамически создать элемент <a href="mailto:...">, а затем «щелкнуть» по нему.Все без изменения страницы.

Я пытаюсь это:

$('<a href="mailto:test@test.com">&nbsp;</a>').click();

... безрезультатно

Ответы [ 13 ]

34 голосов
/ 01 марта 2013

Это не JQuery, но он работает просто отлично.

15 голосов
/ 28 июня 2011

Нажатие на ссылку означает изменение window.location, как насчет

window.location = "mailto:test@test.com";
11 голосов
/ 07 апреля 2016

Чтобы он работал с jQuery, вам сначала нужно выбрать элемент DOM внутри объекта jQuery.

$('body').append('<a id="link" href="mailto:test@test.com">&nbsp;</a>');
$('#link')[0].click();

Обратите внимание на [0]

fiddle: https://jsfiddle.net/fkwhvvhk/

5 голосов
/ 28 июня 2011

Попробуйте что-то вроде этого ...

Демо: http://jsfiddle.net/wdm954/xtTGX/1

$('.a').append('<a class="b" href="mailto:test@test.com">&nbsp;</a>');
$('.b').click(function() {
    window.location = $(this).attr('href');
}).click();
4 голосов
/ 27 мая 2017

.click() работа с DOM, а не с объектом jQuery

должно быть:

$('<a href="mailto:test@test.com"></a>')[0].click();
2 голосов
/ 28 июня 2011

почему бы просто не изменить расположение окна на href ссылки? Есть ли какая-то конкретная причина, по которой вам нужно использовать ссылку?

В противном случае:

window.location = 'http://example.com';
2 голосов
/ 28 июня 2011

Йо может создать тег следующим образом:

$('PARENT_TAG').append('<a id="dinamic_link" href="mailto:test@test.com">&nbsp;</a>');
//Now click it
$('#dinamic_link').click();

HTH!

1 голос
/ 28 июня 2011

Просто делал урок по этому вопросу!

$("[href='mailto:test@test.com']").click();

При этом следует выбрать все элементы с атрибутом href со значением «mailto: test@test.com».

www.w3schools.com / jquery / jquery_selectors.asp

1 голос
/ 28 июня 2011

Невозможно симулировать нормальные клики.Вы можете запускать только click обработчики событий, которые были привязаны к элементу ..

Поскольку @ Алекс опубликовал сообщение, вы можете изменить window.location для достижения того же эффекта.

1 голос
/ 28 июня 2011

Я бы сказал, что вы должны рассмотреть возможность добавления href к контейнеру (в основном div), используя .append () и вызов .click ()

$('parent_div').append('<a id="link" href="mailto:test@test.com">&nbsp;</a>');
//Now click it
$('#link').click();
...