Триггерная ссылка на успех Ajax

Мне нужно вызвать ссылку на Ajax-успех. Код, который у меня есть сейчас:

jQuery.ajax({
//Ajax Options
success: function(value) {
    jQuery('.parent_selector').html(jQuery(value).find('.child_selector'));
    jQuery('.test-link').trigger('click');
},
error: function() {
    //alert(error);
} });

Часть Ajax отлично работает, и я могу загрузить div .parent_selector с данными ответа Ajax. После этого мне нужно вызвать ссылку, для которой у меня есть jQuery('.test-link').trigger('click'); в приведенном выше коде. Однако щелчок по ссылке никогда не запускается. Чтобы проверить, я переместил jQuery('.test-link').trigger('click'); в jQuery(document).ready(function(), чтобы узнать, активирована ли ссылка при загрузке страницы. Но он тоже не работает. Следующее, что я пробовал, заключалось в том, чтобы jQuery('.test-link').trigger('click'); включить событие click в другую ссылку, как показано ниже:

jQuery('section[role="main"]').on('click', '.another-link', function(e){
e.preventDefault();

jQuery('.test-link').trigger('click');

});

Voila!, он работает в событии click другой ссылки. Итак, я действительно смущен тем, что я делаю неправильно здесь. Почему jQuery('.test-link').trigger('click'); не хочет хорошо играть с успешным звонком Ajax?

Ответ 1

При использовании:

$(".test_link").trigger("click")
// or
$(".test_link").click()

Вы выполняете только теги onclick ссылок, которые могут быть связаны с атрибутом jQuery или атрибутом onclick, но не открывают страницу, что у вас есть в href.

Итак, если вы хотите открыть ссылку, которая у вас есть в href, вам нужно сделать следующее:

window.location = $(".test_link").attr("href");

Другая причина, по которой я могу думать, заключается в том, что вы получаете ссылку динамически, и после ее получения вы не добавляете обработчик события click. jQuery "live" может решить проблему, но я бы предпочел использовать delegate, если вы знаете, что такое родительский контейнер.

Ответ 2

Если ваша ссылка является частью значения, возвращаемого вашим вызовом AJAX, функция щелчка не привязана к этому объекту. Попробуйте использовать .live() для привязки функции к объекту вместо .click().

<script>
jQuery('.test-link').live('click', function(){
   //your function stuff
});
</script>

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

Ответ 3

$('#test').live('click', function() {
    window.alert("works");            
});

$('#test').trigger('click');

Ответ 4

Вот рабочий пример

http://jsfiddle.net/CHUsU/1/embedded/result/

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

-Miles

Ответ 5

Просто замените

 jQuery('.test-link').trigger('click');

с

 jQuery('.test-link').click();

или

$('.test-link').click();

Ответ 6

Попробуйте использовать $('.test-link').click()