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

Trigger a click event into a click handler on links

本文关键字:单击 程序 链接 处理 事件      更新时间:2023-09-26

我有一个这样的链接:

 <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 is null ->输入if
  4. 默认点击事件被阻止
  5. AJAX请求
  6. href已更新
  7. 点击事件触发
  8. href被打印
  9. href不为空
  10. 返回true ->链接应该跟在
  11. 后面

我得到一个空字符串,然后在输出一个有效的链接,所以AJAX请求和单击事件触发器工作,但链接没有遵循第二个事件。如果返回true,不应该触发默认事件吗?

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

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