Триггерная ссылка на успех 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()