我需要触发一个链接点击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’)触发(“点击”);在另一个链接的点击事件中,如下所示:
jQuery('section[role="main"]').on('click','.another-link',function(e){ e.preventDefault(); jQuery('.test-link').trigger('click');
});
Voila !,它在另一个链接的点击事件中起作用.所以,我真的很困惑,我在这里做错了什么.为什么jQuery(‘.test-link’).trigger(‘click’);不想玩Ajax成功打电话吗?
解决方法
使用时:
$(".test_link").trigger("click") // or $(".test_link").click()
你只是通过jQuery bind或onclick属性来执行链接的点击事件,但是它不会打开你在href中拥有的页面.
所以如果你想打开你在href中的链接,你需要像下面这样的东西:
window.location = $(".test_link").attr("href");
我可以想到的其他原因是您正在动态获取链接,获取该链接后,您不会在点击事件上添加任何处理程序. jQuery“live”可以解决问题,但是如果你知道父容器是什么,我更喜欢使用delegate.