触发链接点击Ajax成功

时间:2012-03-14 14:09:04

标签: jquery 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部分工作正常,我可以使用Ajax响应数据加载.parent_selector div。在此之后,我需要在上面的代码中触发我有jQuery('.test-link').trigger('click');的链接点击。但是,永远不会触发链接点击。要检查,我在jQuery('.test-link').trigger('click');内移动jQuery(document).ready(function()以查看是否在页面加载时触发了链接。但它也不适用于那里。我尝试的下一件事是将jQuery('.test-link').trigger('click');放在另一个链接的点击事件中,如下所示:

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

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

});

Voila !,它可以在另一个链接的点击事件中运行。所以,我真的很困惑我在这里做错了什么。为什么jQuery('.test-link').trigger('click');不想在Ajax成功调用中发挥出色?

6 个答案:

答案 0 :(得分:4)

使用时:

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

您只能通过jQuery bind或onclick属性执行链接的onclick个事件,但它不会打开您在href中所拥有的页面。

因此,如果您想打开href中的链接,则需要执行以下操作:

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

我能想到的其他原因是你正在动态获取链接,并且在获得它之后你没有在click事件上添加任何处理程序。 jQuery“live”可以解决问题,但如果您知道父容器是什么,我宁愿使用delegate

答案 1 :(得分:0)

如果您的链接是从AJAX调用返回的值的一部分,则click函数不会绑定到该对象。尝试使用.live()将函数绑定到对象而不是.click()。

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

这将允许您创建动态内容,而不必在每次创建链接时重新绑定该功能。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

这是一个工作示例

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

在某些浏览器中,您可能会获取安全沙箱警告,因此如果它不起作用,请将该批次扔到您的硬盘上。

-Miles

答案 4 :(得分:-1)

只需替换

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

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

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

答案 5 :(得分:-1)

尝试使用$('.test-link').click()