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

时间:2014-07-25 13:56:12

标签: javascript jquery html ajax

我有这样的链接:

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

我想要做的是点击链接时是通过AJAX请求更新元素的href属性,然后触发click事件以跟随链接。这是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为null - &gt;输入if
  4. 阻止默认点击事件
  5. AJAX请求
  6. href已更新
  7. 触发点击事件
  8. href已打印
  9. href不为空
  10. return true - &gt;应该遵循链接
  11. 我得到一个空字符串,然后是outup中的有效链接,因此AJAX请求和click事件触发器有效,但第二个事件没有跟踪链接。 如果返回true,是否应该触发默认事件?

1 个答案:

答案 0 :(得分:1)

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

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