Динамически создавать и щелкать ссылку с помощью jQuery

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

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

$('<a href="mailto:[email protected]">&nbsp;</a>').click();

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


person aidan    schedule 28.06.2011    source источник


Ответы (14)


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

window.location = "mailto:[email protected]";
person Alex Korban    schedule 28.06.2011
comment
это не передает информацию о реферере во всех браузерах, поэтому это не совсем эквивалентно созданию ссылки и ее щелчку. - person terrace; 19.06.2012
comment
см.: stackoverflow.com/questions/4762254/ - person terrace; 20.06.2012
comment
Это не решает вопроса. Это только показывает вам, как изменить текущее местоположение Windows. Он не отвечает, как программно создать элемент, а затем программно щелкнуть его. - person MingMan; 17.01.2017

Это не jquery, но работает нормально.

var link = document.createElement('a');
link.href = url;
document.body.appendChild(link);
link.click();    
person solipsicle    schedule 01.03.2013
comment
Спасибо за ответ на вопрос, который именно задан :) - person mcont; 02.03.2015
comment
Очень простое и удобное решение - person Deepak Bhatta; 20.08.2017
comment
Если вы пытаетесь загрузить файл xml, добавьте следующую строку: link.download = url; В противном случае файл xml будет отображаться в браузере. - person JS5; 27.06.2018

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

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

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

скрипка: https://jsfiddle.net/fkwhvvhk/

person jBelanger    schedule 07.04.2016
comment
Вау, просто извлеките элемент DOM затем щелкните по нему. Но почему функция jQuery click() не вызывает функцию DOM для каждого элемента запроса? - person T-moty; 12.05.2016
comment
Я думаю, что это наименее мусорный ответ в море мусорных ответов. Я только что добавил [0] в свой код, и теперь он работает. Смешной. Ссылка находится в DOM, jQuery может найти ссылку, но по непонятной причине не щелкнет по ней. Ни ошибки, ничего. Спасибо за исправление трех символов. - person Andrew; 23.06.2017
comment
$('#ссылка')[0].click(); выдает в консоли сообщение об ошибке TypeError: $(...)[0] is undefined. JQuery 3.2.1 и современный браузер Firefox (версия 68). Я тоже ненавижу "мусорные" ответы... - person McAuley; 06.10.2019

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

должен быть:

$('<a href="mailto:[email protected]"></a>')[0].click();
person KevinBui    schedule 27.05.2017
comment
Это самое простое решение вопроса. Также можно использовать jQuery, чтобы избежать конфликта с $: jQuery(<a href="/product-edit/${this.selected.id}"></a>)[0].click(); - person Grant; 07.07.2020

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

Демонстрация: http://jsfiddle.net/wdm954/xtTGX/1

$('.a').append('<a class="b" href="mailto:[email protected]">&nbsp;</a>');
$('.b').click(function() {
    window.location = $(this).attr('href');
}).click();
person wdm    schedule 28.06.2011

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

$('PARENT_TAG').append('<a id="dinamic_link" href="mailto:[email protected]">&nbsp;</a>');
//Now click it
$('#dinamic_link').click();

ХТХ!

person SubniC    schedule 28.06.2011
comment
это, кажется, не работает для меня. возможно что-то мешает, но .click() не работает по /любой/ ссылке - person aidan; 29.06.2011

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

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

window.location = 'http://example.com';
person Adam Hutchinson    schedule 28.06.2011

У меня были обнаружены некоторые проблемы с аналогичной проблемой, и я нашел самый простой способ для меня:

    var link = document.createElement('a');

    link.download = 'profile.png';
    link.href = '...';
    link.id = 'example';
    link.class = '...';

    document.body.appendChild(link);

    link.click();

В моем случае я потерял много времени, пытаясь сделать это с помощью jquery, выполнение $('#example').click()but у меня не работает. По крайней мере, проблема заключалась в jquery, я обходился без него. Я надеюсь, что это может быть полезно для кого-то. Это простой способ установить якорь для загрузки изображения и щелкнуть сразу после него.

person Juan Antonio    schedule 09.09.2019

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

$('parent_div').append('<a id="link" href="mailto:[email protected]">&nbsp;</a>');
//Now click it
$('#link').click();
person Abdul Kader    schedule 28.06.2011
comment
это, кажется, не работает для меня. возможно что-то мешает, но .click() не работает по /любой/ ссылке - person aidan; 29.06.2011

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

Как сообщил @Alex, вы можете измените window.location для достижения того же эффекта..

person Gabriele Petrioli    schedule 28.06.2011

Только что делал туториал по этому поводу!

$("[href='mailto:[email protected]']").click();

Это должно выбрать все элементы с атрибутом href со значением «mailto:[email protected]».

www.w3schools.com/jquery/jquery_selectors.asp

person Gonads    schedule 28.06.2011

вы должны использовать .on , а затем вызывать .click . Динамически генерируемая гиперссылка не работает с простым .click()

person Raj Sharma    schedule 21.08.2015

person    schedule
comment
это, кажется, не работает для меня. возможно что-то мешает, но .click() не работает по /любой/ ссылке - person aidan; 29.06.2011

person    schedule
comment
это, кажется, не работает для меня. возможно что-то мешает, но .click() не работает по /любой/ ссылке - person aidan; 29.06.2011