我需要触发链接点击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成功调用中发挥出色?
答案 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()