javascript - 将单击事件触发到链接上的单击处理程序中

标签 javascript jquery html ajax

我有一个这样的链接:

 <a id="downloadReport" href="">Download</a>

我想做的是,当点击链接时,通过AJAX请求更新元素的href属性,然后触发点击事件来跟踪链接。这是 JavaScript 代码:

$("#downloadReport").click(function(event)
{
    console.log($(this).attr('href'));
    if ($(this).attr('href') == "")
    {
        event.preventDefault();
        var year = parseInt($("#reportYears").val());

        if (year != 0)
        {
            $.post(
                "/Trainings/getReport",
                {data: year},
                function(data)
                {
                    $("#downloadReport").attr('href', data.trim());
                    $("#downloadReport").click();
                });
        }
    }
    return true;
});

所以通常的行为应该是:

  1. 链接被点击
  2. href 已打印
  3. href 为空 -> 输入 if
  4. 阻止默认点击事件
  5. AJAX 请求
  6. href 已更新
  7. 点击事件被触发
  8. href 已打印
  9. href 不为空
  10. 返回 true -> 应遵循链接

我在输出中得到一个空字符串,然后是一个有效链接,因此 AJAX 请求和单击事件触发器起作用,但在第二个事件中未遵循该链接。 如果返回 true 是否应该触发默认事件?

最佳答案

$("#downloadReport").click(); 将触发附加到它的 jquery 处理程序。您需要使用 dom click 事件才能重定向到新的 href。像这样使用

$("#downloadReport")[0].click();

关于javascript - 将单击事件触发到链接上的单击处理程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24957434/

相关文章:

javascript - 在数组范围内查找索引

asp.net - 您建议在 ASP.NET 中使用哪个 JavaScript 库?

javascript - Jquery 点击事件不再绑定(bind)新创建的标签

javascript - 页面加载时 jQuery 选项卡闪烁 (FOUC)

javascript - 动态地将表 td 分解为单独的 tr

html - 半屏 div 不会扩展到其全宽

javascript - 无法填充 FormData 对象

java - 想在java中发送十六进制字符串数据

javascript - 如何使用 HTML5 Canvas 和 JS 制作响应式角色

javascript - 大括号对象符号在任何表达式中都有效吗?