2013-06-14 5 views
7

Как сделать JQuery нажмите <a href="test.zip" id="mylink">test</a>

<script> 
    // this wont work 
    $('#mylink').trigger('click'); 
</script> 

Пожалуйста, вы можете помочь

+2

, что вы ожидаете, произойдет здесь –

+0

загрузка должна начаться автоматически - благодаря –

+1

, что вы ожидаете, что произойдет? Код, который у вас есть, предназначен для запуска события. Он не имитирует пользователя, нажимая на ссылку –

ответ

1

Просто нажмите:

$("#mylink").click(); 

Если ваши сценарии в голове, то вам необходимо убедиться, что элемент существует, поэтому сценарий должен быть выполнен, когда документ готов.

$(document).ready(function() { 
    $("#mylink").click(); 
}); 
9

Если ваше намерение перейти к указанному URL, как если бы пользователь нажал на ссылку, попробуйте вызвать метод вместо метода JQuery .click() DOM .click():

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

JQuery .click() вызовет обработчики событий, которые вы привязали, но не вызвали поведение по умолчанию.

+0

Это спасло мой день. Спасибо! –

0
document.getElementById('mylink').click(); 

trigger('click') будет срабатывать событие щелчка, но не по умолчанию.

$('a').click(function(){ alert('triggered') }) // this will be fired by trigger 
2

Если вы ждете файл, чтобы получить загружен, он не будет becauer trigger() не будет вызывать событие по умолчанию.

0

Вам нужно подождать, пока DOM закончит загрузку. Это можно сделать с помощью jQuery. Анонимная функция запускается при загрузке страницы, когда все элементы доступны в DOM.

<script> 
    $(function() { 
     $('#mylink').trigger('click'); 
    }); 
</script> 
+0

«при загрузке _and_ как только все элементы доступны»? – nnnnnn

+0

Да - при загрузке страницы выдается событие, сообщающее, что DOM теперь доступен. jQuery прослушивает это событие и запускает любые прослушиватели в соответствии с моим примером. – leepowell

+0

Моя точка зрения заключалась в том, что ваше использование «и» подразумевает два события, один раз при загрузке (что происходит, когда все содержимое закончило загрузку) и один раз на готовом (что происходит, когда все элементы доступны в DOM). – nnnnnn

1

использовать следующий способ .... так как вы хотите загрузить файл, чтобы предотвратить переход от навигации.

$(document).ready(function() { 
    $('#mylink').click(function(e) { 
     e.preventDefault(); //stop the browser navigating 
     window.location.href = 'test.zip'; 
    }); 
}); 
+0

OP пытается прогамматически нажимать на клик, а не нажимать на клик пользователя. – nnnnnn

+0

ok i did not get it – Swarne27

0

ваш выше код не будет работать, потому что вы присвоили значение в href, а затем вы хотите какую-то операцию onclick этого тега привязки.

<a href="test.zip" id="mylink">test</a> 

первую очередь вы назначили .zip к HREF. Таким образом, он сначала откроет zip-файл onclick и не вызовет никакой другой операции в триггере onclick.

поэтому все операции вы хотите сделать, это выполнить первый затем откройте .zip

использовать код, как показано ниже

<a href="javascript:void(0);" id="mylink">test</a> 

$('#mylink').click(function(){ 
    // do your operation here 
    // now open zip 
}); 
+0

OP пытается использовать JavaScript для запуска щелчка на якоре, чтобы zip-файл был открыт/загружен. Не требуется «другой операции». – nnnnnn

+0

Я думаю, что OP упомянул jquery в своем коде. – ripa

+0

Любое использование jQuery _is_ использования JavaScript. Вы неправильно поняли мою точку зрения и вопрос. OP хочет, чтобы загрузка начала _without_ пользователя, который должен был щелкнуть что угодно. – nnnnnn

4

Вам нужно вызвать метод по умолчанию click, а не один на JQuery. Это можно сделать, добавив параметр щелчка по умолчанию в событие click jQuery, используя this.

<a href="http://about.com/"></a> 

Так выглядит JavaScript. Он в основном создает событие, когда DOM готов, и щелкает его промежуточно, таким образом, следуя ссылке.

$(function() { 
    $('a').click(function() { 
     // 'this' is not a jQuery object, so it will use 
     // the default click() function 
     this.click(); 
    }).click(); 
}); 

Чтобы увидеть живой пример (открытие about.com), см: http://jsfiddle.net/8H9UX/

+0

Скрипка глупа, но ответ правильный. +1 –

+1

Но это сгенерирует TWO GET Requests, по умолчанию один и вызванный ... –

+0

@AndreaLigios Спасибо, что заметили! Я обновлю код. – Broxzier